Tokenizer di stringhe
Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 48 di 59.
StringTokenizer viene usato per suddividere una stringa in gettoni (parti più piccole) in base a un delimitatore. Per impostazione predefinita, usa gli spazi bianchi come delimitatore.
Crea un StringTokenizer con il delimitatore predefinito (spazio):
StringTokenizer st = new StringTokenizer("Hello World Java");Conta e ottieni i token:
int count = st.countTokens();
// Ottiene il numero di token
String first = st.nextToken();
// Ottiene il token successivoDopo aver eseguito il codice qui sopra, le variabili contengono:
count: 3
first: "Hello"Importante: i gettoni vengono consumati!
Quando chiami nextToken(), rimuove quel token dal tokenizer. Il metodo countTokens() restituisce il numero di token rimanenti.
StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens()); // Stampa: 3
st.nextToken(); // Consuma "Hello"
System.out.println(st.countTokens()); // Stampa: 2 (non 3!)
st.nextToken(); // Consuma "World"
System.out.println(st.countTokens()); // Stampa: 1Suggerimento: Se devi conoscere il numero totale di gettoni, chiama countTokens() prima di consumare qualsiasi gettone. Usa hasMoreTokens() per verificare se sono disponibili altri gettoni durante l'iterazione.
Sfida
FacileCrea un metodo chiamato tokenizeText che accetta due argomenti:
- Una String (
text) da tokenizzare - Una String (
delimiter) in base a cui suddividere
Il metodo dovrebbe:
- Creare un StringTokenizer con il testo e il delimitatore specificati
- Restituire una stringa contenente il conteggio dei token seguito da ciascun token su una nuova riga
I messaggi restituiti dovrebbero essere:
- Se text è null: restituisci "Invalid text"
- Se delimiter è null: usa lo spazio come delimitatore
- Formato: "Token count: X\nToken: token1\nToken: token2\n..."
Provalo tu
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static String tokenizeText(String text, String delimiter) {
// Scrivi il tuo codice qui
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String delimiter = scanner.nextLine();
if (text.equals("null")) text = null;
if (delimiter.equals("null")) delimiter = null;
System.out.println(tokenizeText(text, delimiter));
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Concetti di base degli array 2DAccesso agli elementi degli array 2DCicli annidati con array 2DRiepilogo - Array 2DAddizione e sottrazione di matriciArray irregolariArray 3D e oltreSchemi comuni degli array 2DRiepilogo - Tutto sugli array4HashSet Parte 1
Che cos'è un HashSet?Aggiungere un elementoRimuovere un elementoVerificare se un elemento esisteVuoto e dimensioneSvuotare e clonareRipasso - HashSet7Gestione di base degli errori
Nozioni di base su try-catchBlocco finallyLancio di eccezioniEccezioni personalizzate2HashMap Parte 1
Che cos'è una HashMap?Dichiarare una HashMapAccedere ai valoriVerificare se una chiave esisteModificare i dizionariRiepilogo - HashMap5HashSet Parte 2
Matematica - Unione di HashSetMatematica - Intersezione di HashSetMatematica - Differenza tra insiemiMatematica - Differenza simmetricaSottoinsiemi e sovrainsiemiIterare sugli insiemi8Operazioni avanzate sulle stringhe
Fondamenti di StringBuilderIntroduzione a StringBufferFondamenti delle espressioni regolariCorrispondenza di pattern con le regexTokenizer di stringheFormattazione avanzata delle stringhe3HashMap Parte 2
Metodi di HashMapIterare con keySet()Iterare con entrySet()HashMap annidateRiepilogo - Gestire il magazzinoRiepilogo - Operazioni con HashMap6Flusso di controllo avanzato
Istruzioni con etichettaEspressione switchCorrispondenza dei patternClausole guardiaRiepilogo - Flusso di controllo9Progetto - Contatore di parole uniche
Inserimento e memorizzazione del testoElaborazione delle paroleEsercitati da solo: Compilatore Java online