| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 17:04:23
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
Senhores... devo estar com problemas de alcool na cabeça....
Estou fazendo o seguinte:
Antes de executar a minha string está com o valor de "2.290,00"
Após a execução da linha, minha string está como valor: ""
Como é possivel?
Se eu mudar de replaceAll para replace ele funciona... mas eu não consigo entender o porque.
Ele simplesmente apaga minha string.
*Se o replaceAll for com qualquer coisa que não seja "ponto final" ele funciona.
To doido mesmo?
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 17:16:38
|
jgbt
GUJ Master
![[Avatar]](/images/avatar/25df35de87aa441b88f22a6c2a830a17.png)
Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline
|
vc tem que usar:
da uma lida sobre expressão regular se vc quiser saber o pq... heheh
[]'s
|
João Bier
Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 17:16:53
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
O primeiro parâmetro de replaceAll é uma expressão regular, não uma string constante.
Se você estudou expressões regulares direitinho, vai saber que "." é uma expressão
regular que bate com qualquer caracter (não só o ponto), e é por isso que
a sua string "sumiu".
Você pode fazer uma de duas coisas:
- Pôr um "\\" na frente do ".", para indicar que o ponto é um mísero ponto, não
uma expressão regular super-poderosa;
- Ou então, já que você quer chutar o pau da barraca, usar Pattern.quote para
"neutralizar" a expressão regular e torná-la uma simples string constante:
Note que "Pattern.quote" não está disponível no Java 5.0 se não me engano.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 17:25:32
|
evandroshx
JavaBaby
![[Avatar]](/images/avatar/6b41f17abd11bbc46176560b301a4e24.jpg)
Membro desde: 28/05/2007 13:21:05
Mensagens: 75
Localização: São Carlos / SP
Offline
|
Cara, é meio louco mas tente o seguinte:
Na verdade, dessa forma vc está indicando que o ponto deve ser tratado com um caracter. O Java causa alguns problemas com alguns tipos de caracteres como ponto (.) e barras ( / \ ).
[]s
|
"...nada é para sempre, tudo vai recomeçar..." (Mário Quintana)"
[]s
Evandro A. S. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 17:37:01
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
Valeu pessoal.
Thingol, valeu pela explicação detalhada. Expressão regular é uma coisa que a muito tempo eu to enrolando pra estudar... hahaha.
Usei o Pattern.quote mesmo, to usando Java 6.0
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 17:47:53
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Eu acho que o pessoal da Sun, como sempre, andou "comendo bola" na definição de "replaceAll". Eles deveriam ter feito o seguinte:
(Note que as linguagens que têm suporte a expressões regulares, como Perl e JavaScript, usam algo específico, como "/", para indicar que a string é uma expressão regular. Por exemplo, teríamos algo como replaceAll (/./, "") ).
E se você realmente quisesse uma expressão regular (que é o caso menos freqüente), usaria:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 11:50:20
|
dahenz
Virtual Machine Man
![[Avatar]](/images/avatar/fb6a253729096c1e92e43c26a6fdadc3.jpg)
Membro desde: 04/10/2006 16:42:13
Mensagens: 578
Offline
|
Neste caso.... como eu faria????
Obrigado!!
|
Daian Henz
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 12:25:49
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Como você deve ter aprendido, String é um tipo imutável, mas as variáveis de referência para Strings não são imutáveis (a menos que denotadas com "final"). Supondo que "query" seja uma variável String:
você pode fazer a substituição assim:
ou então
Como "#" não é um caracter especial para expressões regulares não há problema em usá-lo diretamente.
|
|
|
 |
|
|