Alguém conhece algum método do java ou java.lang.String que divida uma string, por exemplo: “java metadados” em “java” e “metadados” em strings diferentes. Obrigado
Dividir uma String
12 Respostas
existem varias formas de fazer isso.
a mais simples é usar o metodo split:
String [] array = "java metodo".split(" ");
te retorna uma array com as strings separadas pelo argumento so metodo.
vc tmb pode usar a classe StringTokenizer para fazer isso.
de uma pesquisada no site da sun p/ mais detalhes.
[]'s
Acho que StringTokenizer te resolve de um modo um tanto quanto mais elegante.

Origado, isso vai me ajudar muito…
Falando nisso, alguem tem uma comparacaozinha rapida (microbenchmark, mesmo) entre usar split() - com expressoes regulares simples, de no maximo uma ou duas regras - e a mesma coisa feita pelo StringTokenizer? Minha impressao eh de que o split() da um pau nele, pq ja retorna o array prontinho, e nao uma enumeration peh-no-saco. Mas, so vendo… :mrgreen:
E, indepententemente de tudo, spit() eh mais facil de usar 
Rafael
Questão até de gosto… Iterar um Enumeration para mim é muito mais orgasmático iterar que um array…

Orgasmatico. Tai uma boa analise tecnica e fundamentada. Contra isso, nao existem argumentos :mrgreen:

split() faria isto?
Lucas Frare de Avelar Teixeira-20 [email removido]
Separaria tanto pelos espacos quanto pelos hifens?
Sim, ja que suporta qualquer expressao regular. Bastaria vc fazer split("[- ]")
Rafael
Sim, ja que suporta qualquer expressao regular. Bastaria vc fazer split("[- ]")Rafael
Bom…

vivendo e aprendendo…
dessa eu não sabia
Bom, se alguém precisa usar JDK 1.3, aqui tem uma função que substitui parcialmente o String.split para o caso mais comum em que há um único caracter separador. Tentei fazê-la a mais rápida possível, mas sempre há alguma oportunidade para otimização.
split (s, ‘#’) equivaleria a s.split ("#", -1)
/**
* Quebra uma string, usando o separador indicado.
*
* @param cadeia A string a ser quebrada.
* @param sep O separador.
* @return Um array de strings. Se 'cadeia' for nulo, retorna um array vazio.
*/
public static String[] split(String cadeia, char sep) {
String[] ret;
if (cadeia == null) {
ret = new String[0];
} else {
int cnt = 0;
int len = cadeia.length();
for (int i = 0; i < len; ++i) {
if (cadeia.charAt(i) == sep) {
cnt++;
}
}
ret = new String[cnt + 1];
int ndx = 0, pos = 0;
int ndx2;
do {
ndx2 = cadeia.indexOf(sep, ndx);
if (ndx2 == -1) {
ret[pos] = cadeia.substring(ndx, len);
break;
} else {
ret[pos++] = cadeia.substring(ndx, ndx2);
}
ndx = ndx2 + 1;
} while (ndx < len);
if (ret[pos] == null) {
ret[pos] = "";
}
}
return ret;
}