Menu
CoddyTech

Tokenizador de Cadenas

Parte de la sección Lógica y Flujo del Journey de Java de Coddy. Lección 48 de 59.

StringTokenizer se utiliza para dividir una cadena en tokens (partes más pequeñas) según un delimitador. De forma predeterminada, utiliza los espacios en blanco como delimitador.

Crea un StringTokenizer con el delimitador predeterminado (espacio):

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

Para dividir por otro carácter, pásalo como segundo argumento. Cada carácter de esa cadena es un separador por sí solo:

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

Cuenta y obtén los tokens:

int count = st.countTokens();
// Obtiene el número de tokens
String first = st.nextToken();
// Obtiene el siguiente token

Después de ejecutar el código anterior, las variables contienen:

count: 3
first: "Hello"

Importante: ¡Los tokens se consumen!

Cuando llamas a nextToken(), este elimina ese token del tokenizador. El método countTokens() devuelve el número de tokens restantes.

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

st.nextToken();  // Consume "Hello"
System.out.println(st.countTokens());  // Imprime: 2 (¡no 3!)

st.nextToken();  // Consume "World"
System.out.println(st.countTokens());  // Imprime: 1

Consejo: Si necesitas conocer el número total de tokens, llama a countTokens() antes de consumir cualquier token. Usa hasMoreTokens() para comprobar si hay más tokens disponibles durante la iteración.

challenge icon

Desafío

Fácil

Crea un método llamado tokenizeText que reciba dos argumentos:

  1. Un String (text) para tokenizar
  2. Un String (delimiter) por el que dividir

El método debe:

  1. Crear un StringTokenizer con el texto y el delimitador proporcionados
  2. Devolver una cadena que contenga el número de tokens seguido de cada token en una línea nueva

Los mensajes devueltos deben ser:

  • Si text es null: devolver "Invalid text"
  • Si delimiter es null: usar el espacio como delimitador
  • Formato: "Token count: X\nToken: token1\nToken: token2\n..."

Pruébalo tú mismo

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

public class Main {
    public static String tokenizeText(String text, String delimiter) {
        // Escribe tu código aquí
    }
    
    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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Java online