String.split(int)

1 resposta
J

Pessoal, ja aconteceu esse bug varias vezes comigo e precisei usar StringTokenizer pra resolver o problema. Mas eu fquei curioso e espero que alguem possa me ajudar.

private String getParent(String path) { String[] nodes = path.split("."); if(nodes.length > 0) return nodes[nodes.length - 1].trim(); else return nodes[0].trim(); }

ja dei um debug nesse trecho de codigo. o parametro path tem o valor “www.teste.com.br”, mas a variavel local nodes fica vazia! isso mesmo, array de tamanho 0. consequentemente o retorno ão é o esperado, ja que deveria ser “br” (nesse caso).
alguem sabe porque tem esse bug no split?

valeu

1 Resposta

J

Não é bug, é o comportamento previsto do split mesmo.

Split usa expressões regulares e . em expressão regular é um caracter especial, curinga, que significa “qualquer caracter”, é como o * no sistema operacional.

Se você quer representar o caracter . (ponto) em expressão regular, precisa usar uma sequencia de escape .

String[] nodes = path.split("\.");

Para saber mais sobre expressões regulares, veja em:

http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

Criado 4 de junho de 2007
Ultima resposta 4 de jun. de 2007
Respostas 1
Participantes 2