2012-10-25 3 views
2

J'utilise ce code:Chaîne Tokenizer, delimiter

StringTokenizer tokenizer=new StringTokenizer(line, "::"); 

à diviser la chaîne suivante:

hi my name is visghal:: what is yor name name:: being thw simple my::: what is yor name name. 

Maintenant, je veux diviser la chaîne en utilisant :: comme séparateur. Cela fonctionne bien. Mais il prend également en considération :::.

En d'autres mots que je veux:

hi my name is visghal 
what is yor name name 
being thw simple my 
: what is yor name name 

Au contraire, il me donne ce qui suit:

being thw simple my 
what is yor name name 
hi my name is visghal 

Il prend :: et ::: en même. Y a-t-il un moyen d'éviter cela?

+0

StringTokenizer est obsolète, évitez-le – Bozho

Répondre

6

Vous pouvez simplement utiliser chaîne # divisée comme ceci:

String[] arr = str.split("::"); 

EDIT:

String[] arr = str.split("::\\s*"); // for stripping spaces after :: 

SORTIE:

hi my name is visghal 
what is yor name name 
being thw simple my 
: what is yor name name 
2

Splitter Essayez de goyave si vous avez besoin de fonctionnalités supplémentaires sur String.split. Cela permettra de couper et d'omettre les chaînes vides.

String myInput = "..."; 
Iterable<String> parts = Splitter.on("::").split(myInput); 
0

Elle prend :: et ::: comme même

Non, votre délimiteur :: se trouve deux fois dans cette partie de la chaîne ::: et c'est l'explication de votre résultat. La méthode split("::") doit être utilisée.