2016-02-08 1 views
-5

Comment dois-je utiliser StringTokenizer de sorte que lorsque les délimiteurs apparaissent consécutivement plusieurs fois, StringTokenizer reconnaît l'espace vide entre eux comme une chaîne vide et imprime une ligne vide?Comment utiliser StringTokenizer correctement

Alternativement, comment puis-je utiliser la méthode String.split() qui prend plusieurs caractères comme délimiteurs et fait le même travail?

Par exemple chaîne "abcd;,;ef,,gh" doit être imprimé comme:

abcd 
# empty line here 
# empty line here 
ef 
# empty line here 
gh 
+0

Pouvez-vous fournir le code que vous utilisez qui ne fonctionne pas? –

+0

@Charles Caldwell StringTokenizer tok = nouveau StringTokenizer (s, ".,;"); while (tok.hasMoreTokens()) { stringCount ++; } – Geek

+0

Voyez si cette réponse SO vous aidera. Il utilise 'split 'à la place, mais il pourrait au moins faire le travail. http://stackoverflow.com/questions/12395862/tokenising-a-string-containing-empty-tokens –

Répondre

0

Selon votre entrée

"abcd;,;ef,,gh" 

Sortie:

abcd 
# empty line here 
# empty line here 
ef 
# empty line here 
gh 

Pourquoi il y a seulement 2 "ligne vide ici" , quand il y avait; ?

Peut-être vous pouvez remplacer tous les "délimiteurs" par des espaces, tokenize puis imprimer chaque chaîne avec un foreach, et à l'intérieur de la boucle d'imprimer un espace ou "ligne vide ici"?

+0

I veulent que l'espace vide entre ces caractères soit compté comme une chaîne. J'étais confus ne sachant pas comment utiliser tokenizer et split. – Geek

+0

Vous pouvez utiliser regex, pour remplacer tous les caractères non-lettre, avec un espace, puis le tokenizer. –