Menu
Coddy logo textTech

Tokenizador de Strings

Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 48 de 59.

StringTokenizer é usado para dividir uma string em tokens (partes menores) com base em um delimitador. Por padrão, ele usa espaço em branco como delimitador.

Crie um StringTokenizer com delimitador padrão (espaço):

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

Contar e obter tokens:

int count = st.countTokens();
// Obtém o número de tokens
String first = st.nextToken();
// Obtém o próximo token

Após executar o código acima, as variáveis contêm:

count: 3
first: "Hello"

Quando você chama nextToken(), ele remove esse token do tokenizador. O método countTokens() retorna o número de restantes tokens.

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

st.nextToken();  // Consome "Hello"
System.out.println(st.countTokens());  // Imprime: 2 (não 3!)

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

Dica: Se você precisar saber a contagem total de tokens, chame countTokens() antes de consumir qualquer token. Use hasMoreTokens() para verificar se há mais tokens disponíveis durante a iteração.

challenge icon

Desafio

Fácil

Crie um método chamado tokenizeText que recebe dois argumentos:

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

O método deve:

  1. Criar um StringTokenizer com o texto e delimitador dados
  2. Retornar uma string contendo a contagem de tokens seguida de cada token em uma nova linha

As mensagens de retorno devem ser:

  • Se text for null: retornar "Invalid text"
  • Se delimiter for null: usar espaço como delimitador
  • Formato: "Token count: X\nToken: token1\nToken: token2\n..."

Folha de consulta

StringTokenizer divide uma string em tokens (partes menores) com base em um delimitador. Por padrão, ele usa espaço em branco como delimitador.

Crie um StringTokenizer com delimitador padrão (espaço):

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

Conte e obtenha tokens:

int count = st.countTokens();  // Obtém o número de tokens
String first = st.nextToken(); // Obtém o próximo token

Crie StringTokenizer com delimitador personalizado:

StringTokenizer st = new StringTokenizer(text, delimiter);

Quando você chama nextToken(), ele remove esse token do tokenizer. O método countTokens() retorna o número de tokens restantes.

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

st.nextToken();  // Consome "Hello"
System.out.println(st.countTokens());  // Imprime: 2 (não 3!)

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

Dica: Se você precisar saber o número total de tokens, chame countTokens() antes de consumir qualquer token. Use hasMoreTokens() para verificar se há mais tokens disponíveis durante a iteração.

Experimente você mesmo

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

public class Main {
    public static String tokenizeText(String text, String delimiter) {
        // Escreva seu código aqui
    }
    
    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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo