Problema com String.split

Olá pessoal!

Tenho uma dúvida quanto ao método split da API String.
Quando eu tenho uma String e passo a String “.” para o método split, ele me retorna vazio (""). E quando eu subistituo o ponto (".") por dois pontos (":") e faço o mesmo na String, ele funciona.
Porque isso acontece?

Exemplo:

String lTeste = "fabiano.almeida"; String[] lTokens = lTeste.split("."); System.out.println(lTokens.length);
A saída é 0 (zero). Mas se eu fizer isso:

String lTeste = "fabiano:almeida"; String[] lTokens = lTeste.split(":"); System.out.println(lTokens.length);
Funciona. Porque quando eu coloco ponto ele não funciona?

Desde já agradeço.

Amigo, não tenho certeza, mas acho que o split trabalha com expressões regulares…
Se esse for o caso, o ponto (.) é um caracter especial (metacaractere), por isso você deve “escapar” o ponto para usar ele como sinal de pontuação mesmo…
Tenta “.” ao invés de “.”. (aspas | barra invertida | ponto | aspas)

Boa sorte!

1 curtida

Boa Cassio.

Só tem um probleminha, essa sua solução não funciona. Mas eu testei colocar “\.” e funcionou.

Mesmo assim, obrigado.

1 curtida

Foi mal, mania do Perl… em jJava tem que por duas barras, você está certo :smiley:

Abraço!

no meu caso era um “|” (pipe) ja tinha tentado com “|” e não funcionava, tava achando que o split tava bugado kkkkkkk

vlw resolveu meu problema =D

A expressão regular final deve ser “.”. Mas a \ é um caractere especial em java (lembre-se, vc pode fazer “\n”). Para inserir uma barra só, você deve usar duas barras “\.”

Mas não confunda. A expressão regular final (e isso vc pode até conferir imprimindo a String com System.out.println) ainda será “.”.

1 curtida