Pergunta

Como separar a palavras (e outros elementos) de uma string, ou seja, como separar seus tokens?

Resposta

A tarefa de separar as palavras que compõe uma frase, ou mesmo palavras, números ou símbolos é relativamente simples graças a existência de uma classe especialmente destinada a isso na API Java: java.util.StringTokenizer.

Esta classe permite separar os tokens, ou seja, elementos existentes entre separadores, isto é, um conjunto de caracteres que define a separação das partes da string como tokens. Por exemplo: se entendemos os separadores como sendo os espaços em branco, então a frase: "1 2 Feijão com Arroz, 3 4 Feijão no Prato." possui os seguintes tokens, 10 no total: "1", "2", "Feijão", "com", "Arroz,", "3", "4", "Feijão", "no", "Prato.". Note que a vírgula e o ponto final existente na frase ficaram associados as palavras que os precederam dado não existir um espaço em branco entre eles.

Tal separação poderia ser obtida com seguinte trecho de código:

String frase = "1 2 Feijão com Arroz, 3 4 Feijão no Prato.";
StringTokenizer st = new StringTokenizer(frase);
while (st.hasMoreTokens()) {
  System.out.println(st.nextToken());
}

Que imprimiria portanto:

1
2
Feijão
com
Arroz,
3
4
Feijão
no
Prato.