Problemas com split (método p/ String)

5 respostas
B

Olá pessoal, preciso de uma ajuda

Tenho uma string que passo por parâmetro para um método

public void Prox(String str){
...
}

Não tenho como prever a quantidade de “.” que existe nesta String, e ela representa uma hierarquia para uma JTree, então, quando eu passar por exemplo
“1.1.1.2”
Estou usando algo como isso

public void String Prox(String str){
        ...
        String seq[];
        seq = str.split(".");
        ...

        //Quando passo a string 1.2, length fica = 0, era pra ser 2
}

Como posso fazer isso?

Obrigado

5 Respostas

jonasjgs2

amigo faca o seguinte:

str.split("\.");

B

deu certo, saberia me explicar o por quê?

Rodrigo_Sasaki

Já ouviu falar de expressões regulares?

o método split recebe uma String que ele interpreta como expressão regular e não como literal.

o ponto . é um metacaractere que casa com qualquer coisa, portanto se você der um split por “.” ele irá dividir em todos os caracteres, porque vai casar com todos.

Agora se você quiser o . literal, precisa escapá-lo, ao escapar você está dizendo ao “interpretador de regex”:

“Ei, eu quero que você veja isso como um ponto e não como um metacaractere”.

E como você faz isso? Java tem um caractere de escape que é a barra invertida “”, aí é só combinar os 2

. = metacaractere que casa com (quase) tudo.
. = caractere literal

B

Opa, obrigado !

Lucas_Abbatepaolo

Assim tambem funciona:

public void String Prox(String str){  
        ...  
        String seq[];  
        seq = str.split("[.]");  
  
}
Criado 27 de setembro de 2012
Ultima resposta 27 de set. de 2012
Respostas 5
Participantes 4