Analyser une chaîne avec plusieurs délimiteurs en Java


J'essaie de charger une chaîne dans un tableau, en supprimant tous les espaces et la ponctuation. Le problème est que si j'ai deux délimiteurs de suite, il laisse un blanc dans le tableau.

Ce que j'ai:

String[] temparray =inputstr.split("\\s+|,|;|\\(|\\)|, ");

Exemple:

inputstr = "I bought bread, eggs, and milk"

Il sort comme:

I
bought
bread

eggs

and
milk

Quelqu'un sait-il comment empêcher les espaces après le chargement des virgules dans le tableau?

Author: Alexis C., 2014-04-09

2 answers

Vous pouvez utiliser une classe de caractères pour regrouper tous les caractères de séparation

String[] temparray = inputstr.split("[\\s,;()]+");
 2
Author: Reimeus, 2014-04-08 22:31:26

Vous pouvez combiner les deux cas pour "virgule" et "virgule suivie d'un espace" en utilisant un métacaractère ? pour indiquer "facultatif".

J'ai remplacé , avec , ? (virgule-espace-point d'interrogation). De cette façon, l'espace est compensée dans le cadre du délimiteur.

//                           space here ---v
String[] temparray = inputstr.split("\\s+|, ?|;|\\(|\\));

Impression de chaque élément du tableau:

I
bought
bread
eggs
and
milk
 1
Author: rgettman, 2014-04-08 21:47:52