Curiosidade

4 respostas
L

String whatever = “10841992437180.283327531625828”;

System.out.println(1 -> " + whatever.replaceAll(”.",""));

System.out.println(2 -> " + whatever.replaceFirst(”.",""));

System.out.println(3 -> " + whatever.replaceAll(”\.",""));

Resultado:

1 ->
2 -> 0841992437180.283327531625828
3 -> 10841992437180283327531625828

Alguem m consegue explicar o pq destes resultados?!

TIA

4 Respostas

smota

replaceAll recebe como primeiro parâmetro uma RegularExpression e

  1. “.” significa qualquer caracter.
  2. replaceFirst a mesma coisa mas só substitui a primeira ocorrencia
  3. o caracter especial “.” foi “escapado” (ehehe sei lah como fala) e agora foi tratado como um caracter mesmo, entao soh substituiu a sua ocorrencia.
cv1

O que voce nao entendeu, especificamente, da documentacao dos metodos replaceAll e replaceFirst?

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

Bruno_Cardoso

“Lupino”:
String whatever = “10841992437180.283327531625828”;

System.out.println(1 -> " + whatever.replaceAll(”.",""));

System.out.println(2 -> " + whatever.replaceFirst(”.",""));

System.out.println(3 -> " + whatever.replaceAll(”.",""));

Resultado:

1 ->
2 -> 0841992437180.283327531625828
3 -> 10841992437180283327531625828

Alguem m consegue explicar o pq destes resultados?!

TIA

Boas mike!

Pois, tal como o smota disse tens que usar expressões regulares… mas afinal o que queres fazer? se for só substituir um caracter podes usar o metodo replace que aceita dois caracteres como parametros…

Mas para responder às tuas perguntas:
1º tas a dizer para substituir TUDO ( “.” em expressoes regulares significa qq coisa) por “”
2º o mesmo que o primeiro só para a primeira ocurrencia
3º tas a dizer para substituir o padrao “.” (que equivale ao caracter “.”) por “”

esclarecido ? :stuck_out_tongue:

L

Os meus agradecimentos para quem realmente ajudou(smota / morcego)!! :wink:

Criado 10 de maio de 2004
Ultima resposta 10 de mai. de 2004
Respostas 4
Participantes 4