StringTokenizer ou split

Estou fazendo um metodo que pega uma string e colocar cada palavra em um String[] já fiz com o StringTokenizer mas olhando a documentação descobri o meto split da classe string que reduz o tamanho do código tente aplicar mas estou com um problema quando tem mais de um espaço em branco entre uma string e outra. Sejamos uma simulação abaixo:

um exemplo:

public class VectorTeste {
	
	public static void main(String[] args) {
		String[] result = "este e um teste".split("\s");
		for (int x=0; x<result.length; x++)
			 System.out.println("-"+result[x]+"-");
		}
}


SAIDA DO PROGRAMA
-este-
-e-
-um-
-teste-

CORRETO FUNCIONA. MAS O PROBLEMA É O SEGUINTE TENHO MAIS DE UM ESPAÇO EM BRANCO ENTRE UMA STRING E OUTRA. VEJA O PROGRAMA ABAIXO E A SAIDA DELE:



public class VectorTeste {
	
	public static void main(String[] args) {
		String[] result = "  este    e    um    teste".split("\s");
		for (int x=0; x<result.length; x++)
			 System.out.println("-"+result[x]+"-");
		}
}



SAIDA DO PROGRAMA
--
--
-este-
--
--
--
-e-
--
--
--
-um-
--
--
--
-teste-


O PROBLEMA QUE ELE INSERIU EM ALGUMAS POSIÇÕES DO ARRAY APENAS COM O ESPAÇO EM BRANCO E NÃO PODE ACONTECER.

ALGUEM TEM ALGUMA SUGESTÃO OU TENHO QUE USAR O STRINGTOKENIZER MESMO


:roll:

Use o split().

Para contornar o teu problema, verifique, no loop, se o valor atual nao eh uma string em branco:

...
if ("".equals(result[x])) {
    continue;
}
...

Rafael

Veja se em vez de usar “\s” não seria melhor usar “\s+”…