2009-10-14 7 views
1

comment utiliser java StringTokenizer pour la chaîne ci-dessouscomment utiliser java stringtokenizer?

| feild1 | || field2 field4 | ...

je veux java prendre le blanc comme un champ aussi, mais StringTokenizer est le sauter.

Une option pour l'obtenir?

+0

Qu'est-ce que vous utilisez comme token? – Geo

+0

J'utilise un symbole de tuyau | – someguy

Répondre

10

Avez-vous vraiment besoin d'un Tokenizer? Pourquoi ne pas diviser la chaîne en tableau? De cette façon, vous aurez les champs vides aussi.

String fields = "bla1|bla2||bla3|bla4|||bla5"; 
String[] field = fields.split("\\|"); // escape the | because split() needs a regexp 
+2

Notez que ceci ignorera les champs vides finaux (c'est-à-dire "bla5 ||" renvoie 'new String [] {" bla5 "}' –

+0

Thanx cela a fonctionné :) – someguy

+4

@Araon Digulla: ceci peut être corrigé. Utilisez .split ("\\ |", -1) pour obtenir des champs vides à la fin –

3

Sans StringTokenizer en utilisant String.split():

for (String a : "|1|2||3|".split("\\|")) { 
    System.out.println("t="+a); 
} 

Mise à jour: oublièrent échapper (comme d'habitude). +1 vote

+2

Vous devrez échapper le '|'. –

15

Qu'en est-il de java.util.Scanner? Beaucoup plus puissant que le StringTokenizer, introduit en Java 5 et pour la plupart inconnus ou sous-estimés:

Scanner scanner = new Scanner("1|2|3|||6|"); 
scanner.useDelimiter("\\|"); 
while (scanner.hasNext()) { 
    System.out.println(scanner.next()); 
} 

EDIT: Il peut même analyser les ints (et d'autres types) directement, comme ceci:

Scanner scanner = new Scanner("1|2|3|||6|"); 
scanner.useDelimiter("\\|"); 
while (scanner.hasNextInt()) { 
    int x = scanner.nextInt(); 
    System.out.println(x); 
} 
+1

Maintenant c'est cool ici. –

+1

Certainement inconnu pour moi et sous-estimé. Merci. – pimpf0r

+0

Année 2012, et c'est encore impopulaire! Je n'ai jamais su qu'il existait! – frappuccino

Questions connexes