Menu
CoddyTech

Tokenizer de chaînes

Fait partie de la section Logique & Flux du Journey Java de Coddy. Leçon 48 sur 59.

StringTokenizer est utilisé pour découper une chaîne en jetons (parties plus petites) à l’aide d’un délimiteur. Par défaut, il utilise les espaces comme délimiteur.

Crée un StringTokenizer avec le délimiteur par défaut (espace) :

StringTokenizer st = new StringTokenizer("Hello World Java");

Pour découper selon un autre caractère, passe-le en deuxième argument. Chaque caractère de cette chaîne est un séparateur à part entière :

StringTokenizer st = new StringTokenizer("one,two;three", ",;");
System.out.println(st.countTokens());  // Affiche : 3

Compter et obtenir des jetons :

int count = st.countTokens();
// Obtient le nombre de tokens
String first = st.nextToken();
// Obtient le token suivant

Après l’exécution du code ci-dessus, les variables contiennent :

count: 3
first: "Hello"

Important : les jetons sont consommés !

Lorsque tu appelles nextToken(), ce jeton est retiré du tokenizer. La méthode countTokens() renvoie le nombre de jetons restants.

StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens());  // Affiche : 3

st.nextToken();  // Consomme "Hello"
System.out.println(st.countTokens());  // Affiche : 2 (et non 3 !)

st.nextToken();  // Consomme "World"
System.out.println(st.countTokens());  // Affiche : 1

Conseil : Si tu as besoin de connaître le nombre total de jetons, appelle countTokens() avant de consommer des jetons. Utilise hasMoreTokens() pour vérifier s'il reste des jetons disponibles pendant l'itération.

challenge icon

Défi

Facile

Crée une méthode nommée tokenizeText qui prend deux arguments :

  1. Une String (text) à tokeniser
  2. Une String (delimiter) servant de séparateur

La méthode doit :

  1. Créer un StringTokenizer avec le texte et le séparateur fournis
  2. Renvoyer une chaîne contenant le nombre de jetons, suivi de chaque jeton sur une nouvelle ligne

Les messages renvoyés doivent être :

  • Si text est null : renvoyer "Invalid text"
  • Si delimiter est null : utiliser l’espace comme séparateur
  • Format : "Token count: X\nToken: token1\nToken: token2\n..."

Essayez vous-même

import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static String tokenizeText(String text, String delimiter) {
        // Écrivez votre code ici
    }
    
    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));
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Java en ligne