Java StringTokenizer
La così detta "tokenization" è un processo attraverso il quale spezziamo la stringa in più parti, dove ogni parte è appunto chiamata token.
Java ci mette a disposizione la classe StringTokenizer per spezzare la stringa in token, ed è molto facile usarla.
Se state obbiettando che già possiamo String.split, vi dico che in parte avete ragione, ma ci stanno delle differenze in termini di flessibilità e performance.
Qui potete un articolo che mostra alcune differenze.
A questo punto andiamo a vedere un esempio con StringTokenizer:
public class StringTokenizerTest {
public static void main(String[] args) {
StringTokenizer st1 = new StringTokenizer("Ciao!Come stai?E' tanto che non ci vediamo!");
for (int i = 1; st1.hasMoreTokens(); i++) {
System.out.println("Token " + i + ":" + st1.nextToken());
}
}
}
Questo è l'output prodotto:
Token 1:Ciao!Come
Token 2:stai?E'
Token 3:tanto
Token 4:che
Token 5:non
Token 6:ci
Token 7:vediamo!
In sostanza la stringa viene spezzata ad ogni spazio.
Possiamo, ovviamente, impostare un altro delimitatore passandolo al costruttore:
public class StringTokenizerTest {
public static void main(String[] args) {
StringTokenizer st1 = new StringTokenizer("Ciao!Come stai?E' tanto che non ci vediamo!", "?");
for (int i = 1; st1.hasMoreTokens(); i++) {
System.out.println("Token " + i + ":" + st1.nextToken());
}
}
}
Questo il risultato:
Token 1:Ciao!Come stai
Token 2:E' tanto che non ci vediamo!
Possiamo anche decidere di "eliminare" il delimitatore usando il costruttore a tre argomenti:
public class StringTokenizerTest {
public static void main(String[] args) {
StringTokenizer st1 = new StringTokenizer("Ciao!Come stai?E' tanto che non ci vediamo!", "?", false);
for (int i = 1; st1.hasMoreTokens(); i++) {
System.out.println("Token " + i + ":" + st1.nextToken());
}
}
}
Stesso risultato senza il ?:
Token 1:Ciao!Come stai
Token 2:E' tanto che non ci vediamo!
StringTokenizer tende ad essere più perfomante di String.split, ma anche meno flessibile.
Tendenzialmente, da quanto ho capito, il suo è consigliato solo se la stringa da spezzare è molto lunga, e deve essere spezzata in maniera "semplice" (niente espressioni regolari o giù di li).
Enjoy!
java stringtokenizer split string
Commentami!