J'ai besoin de diviser ma chaîne par des espaces. Pour cela, j'ai essayé :
str = "Hello I'm your String";
String[] splited = str.split(" ");
Mais ça ne semble pas fonctionner.
J'ai besoin de diviser ma chaîne par des espaces. Pour cela, j'ai essayé :
str = "Hello I'm your String";
String[] splited = str.split(" ");
Mais ça ne semble pas fonctionner.
Ce que vous avez devrait fonctionner. Si, toutefois, les espaces fournis se transforment par défaut en... autre chose ? Vous pouvez utiliser la regex des espaces blancs :
str = "Hello I'm your String";
String[] splited = str.split("\\s+");
Ainsi, un nombre quelconque d'espaces consécutifs divisera votre chaîne de caractères en jetons.
En passant, je ne suis pas sûr que "divisé" soit un mot :) Je crois que l'état d'être victime d'un split est aussi "split". C'est une de ces choses délicates en grammaire :-) Je n'essaie pas de faire la fine bouche, je me suis juste dit que je devais le faire savoir !
:-) Hé, ce n'est pas grave. J'ai utilisé des noms de variables ridicules (dans un code que je n'aurais probablement pas dû laisser vivre !) Je n'essayais pas d'être un nazi de la grammaire ou quoi que ce soit, je passais juste un petit détail, c'est tout.
Je n'en suis pas sûr au premier abord. S'il s'agit uniquement d'espace, vous pouvez former votre propre classe en la mettant entre parenthèses, donc dans votre cas probablement (attention, ceci n'est pas testé) [ +\\-/;]+
- remarquer le \` around the
-` pour y échapper. Maintenant, cela correspondra probablement This is+a+ - + - + - test
en 4 jetons, ce qui peut être souhaité ou non. Le vrai problème est que vous ne pouvez pas utiliser \\s
pour correspondre à "tout espace blanc". Vous feriez mieux de ne pas utiliser split, et d'utiliser simplement Matcher m = Pattern.compile("([A-Za-z0-9]+)").matcher(text); while(m.find()) list.add(m.group(1));
pour récupérer les mots au lieu de diviser un grand texte.
Utilisez Stringutils.split()
pour diviser la chaîne par des pas blancs. Par exemple StringUtils.split("Hello World")
renvoie "Hello" et "World" ;
Afin de résoudre le cas mentionné, nous utilisons la méthode de fractionnement comme suit
String split[]= StringUtils.split("Hello I'm your String");
lorsque nous imprimons le tableau divisé, la sortie sera :
Bonjour
Je suis
votre
Chaîne de caractères
Essayez
String[] splited = str.split("\\s");
http://download.oracle.com/javase/tutorial/essential/regex/pre_char_classes.html
Si d'une manière ou d'une autre vous ne voulez pas utiliser la méthode de division de la chaîne, vous pouvez utiliser la classe StringTokenizer en Java comme
StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
String[] splited = new String[tokens.countTokens()];
int index = 0;
while(tokens.hasMoreTokens()){
splited[index] = tokens.nextToken();
++index;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
C'est bien... quelles sont les valeurs dans le tableau 'splited' ?
2 votes
Votre code fonctionne en effet tel quel. Voir code exécuté en direct sur IdeOne.com .
0 votes
@BasilBourque - Je n'ai pas trouvé de bouton "run" sur ce lien.
2 votes
@nanosoft La page de IdeOne.com s'exécute automatiquement au chargement. Voir la sortie sous le code, en stdout section. Pour modifier le code, cliquez sur le bouton
fork
lien près du coin supérieur gauche.0 votes
Cela répond-il à votre question ? Comment diviser une chaîne de caractères avec des caractères d'espacement comme délimiteurs ?