2015-09-14 1 views
3

d'une chaîne sous forme de:StringTokenizer Non Affichage d'un onglet (" t") comme espaces blancs ("\ s +")

String myStr = "5.1\t3.5\t1.4\t0.2\t0.0"; 

Si je l'appelle:

StringTokenizer token = new StringTokenizer(myStr, "\\s+"); 
String firstElement = token.nextToken(); 

firstElement puis est égal à la chaîne entière. En revanche, si j'appelle:

StringTokenizer token2 = new StringTokenizer(myStr); 
String firstElement = token2.nextToken(); 

firstElement est égal à "5.1". De même si j'utilise la chaîne divisée comme ci-dessous:

String[] splitArray = myStr.split("\\s+") 
String firstElement = splitArray[0]; 

puis, firstElement est "5.1".

Je comprends que StringTokenizer est déconseillé pour l'utilisation et est classé comme une "classe héritée". Mon intention ici est de comprendre pourquoi le même délimiteur fonctionne différemment entre split et StringTokenizer. Je m'attendais à ce que le premier exemple fonctionne comme les deux derniers, mais pour une raison quelconque, il saute les onglets. Toute orientation sur ce que je manque serait très appréciée.

note J'exécute 1.7.0_19 sur OSX dans Eclipse, mais je ne m'attendrais pas à ce que ces variables aient un effet ici.

Répondre

3

StringTokenizer n'utilise pas d'expression régulière comme délimiteurs. Le paramètre est une chaîne contenant une liste de caractères délimiteurs.

Le constructeur StringTokenizer(String) est identique à StringTokenizer(String, "\t\n\f\r") donc il fonctionne pour votre chaîne.

+0

Le l'utilisation de StringTokenizer avec "\\ s +" est basée sur cette Ha doop Tutoriel de MapR. Je suppose que c'est une erreur. https://www.mapr.com/blog/how-write-mapreduce-program#.VfZblvlVhBc – ZaydH

1

StringTokenizer: il utilise délimiteurs sous forme de chaîne qui peut contenir la liste des caractères délimiteurs pas regex

enter image description here

de Split: utilise délimiteurs regex

enter image description here

+0

Pour ceux comme moi qui n'étaient pas trop avertis sur les expressions régulières, j'ai trouvé cela utile. http://www.vogella.com/tutorials/JavaRegularExpressions/article.html – ZaydH