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 tokenDespué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: 1Consejo: 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.
Desafío
FácilCrea un método llamado tokenizeText que reciba dos argumentos:
- Un String (
text) para tokenizar - Un String (
delimiter) por el cual dividir
El método debe:
- Crear un StringTokenizer con el texto y el delimitador dados
- 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));
}
}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
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap5HashSet Parte 2
Matemáticas - Unión de HashSetsMatemáticas - Intersección de HashSetMatemáticas - Diferencia de ConjuntosMatemáticas - Diferencia SimétricaSubconjuntos y SuperconjuntosIterando Sobre Conjuntos8Operaciones Avanzadas con Cadenas
Conceptos Básicos de StringBuilderIntroducción a StringBufferConceptos Básicos de Expresiones RegularesCoincidencia de Patrones con RegexTokenizador de CadenasFormato Avanzado de Cadenas3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras