Menu
Coddy logo textTech

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) basándose en un delimitador. Por defecto, utiliza el espacio en blanco como delimitador.

Crea un StringTokenizer con el delimitador por defecto (espacio):

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

Contar y obtener 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: ¡se consumen tokens!

Cuando llamas a nextToken(), 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 saber el recuento total de tokens, llama a countTokens() antes de consumir cualquier token. Usa hasMoreTokens() para comprobar si hay más tokens disponibles mientras iteras.

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 cual dividir

El método debe:

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

Los mensajes de retorno 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