2017-02-02 1 views
2

Par exemple, je ve got Some string a.b.c.d`, je l'ai séparé par des jetons. mais maintenant je veux faire une chose spécifique avec un, puis quelque chose d'autre avec b, et quelque chose d'autre avec c. Comment puis je faire ça?Tokenizer java (string)

String value="a.b.c.d"; 
StringTokenizer tokenize = new StringTokenizer(value, "."); 
while(tokenize.hasMoreTokens()){ 
    String separated1= tokenize.?????; 
    String separated2= tokenize.?????;        
    String Val1 = someMethod1(separated1); 
    String Val2 = someMethod2(separated2); 
} 
//tokenize next line is not solution 
+2

Pourquoi ne pas utiliser String.split()? StringTokenizer est une classe héritée. – user3437460

+0

merci beaucoup, je vais essayer avec String.split() – mica1234

+0

il n'a pas résolu mon problème, je ne peux que choisir combien d'entre eux je veux "imprimer", mais je ne peux toujours pas choisir lequel. – mica1234

Répondre

0

Pourquoi ne pas utiliser le fractionnement? Plus facile à utiliser et plus logique ici

1

En utilisant String.split vous pouvez diviser sur le . dans un tableau.

Que diriez-vous quelque chose comme ce qui imprime chaque jeton:

 String value = "a.b.c.d"; 
     String[] tokens = value.split("\\."); 
     for (String token : tokens) { 
      System.out.println(token); 
     } 

Les . a besoin d'être échappées que la fonction split prend une expression rationnelle et . est un caractère générique

3

Juste pour préciser ce que @ RealSkeptic déjà dit, éviter la boucle:

String value = "a.b.c.d"; 
    String[] separated = value.split("\\."); 
    if (separated.length >= 2) { 
     String val1 = someMethod1(separated[0]); 
     String val2 = someMethod2(separated[1]); 
    } else { 
     // other processing here 
    } 

Vous pourriez faire quelque chose de similaire avec un StringTokenizer si vous avez aimé, vous auriez besoin d'au moins deux instructions if pour vérifier s'il y avait suffisamment de jetons. Mais comme @ user3437460 a dit, StringTokenizer est maintenant héritage; String.split() est recommandé dans le nouveau code.