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

Crear un StringTokenizer con delimitador predeterminado (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"

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 conteo total de tokens, llama a countTokens() antes de consumir ningún token. Usa hasMoreTokens() para verificar si hay más tokens disponibles mientras iteras.

challenge icon

Desafío

Fácil

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

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

El método debería:

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

Los mensajes de retorno deberían ser:

  • Si text es null: return "Invalid text"
  • Si delimiter es null: use space as delimiter
  • Formato: "Token count: X\nToken: token1\nToken: token2\n..."

Hoja de referencia

StringTokenizer divide una cadena en tokens (partes más pequeñas) basados en un delimitador. Por defecto, utiliza el espacio en blanco como delimitador.

Crear un StringTokenizer con delimitador predeterminado (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

Crear StringTokenizer con delimitador personalizado:

StringTokenizer st = new StringTokenizer(text, delimiter);

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 conocer el conteo total de tokens, llama a countTokens() antes de consumir ningún token. Usa hasMoreTokens() para verificar si hay más tokens disponibles mientras iteras.

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