Estou com um sério problema e não sei como resolver
:sad:
É o seguinte:
StringValor="R$ 50,64";//Vem do BancoStringMsgEmail="Valor do Produto: [VALOR_PRODUTO]";MsgEmail=MsgEmail.replaceAll("\\[VALORPRODUTO]",Valor);
Qdo tento executar a rotina acima, ocorre um erro por causa do cifrão (Illegal group reference).
Alguém tem alguma luz?
cara o problema naum tah acontecendo por causa da string do valor
que tem o R$, vc jah tentou executar sem essa parte da string soh pra testar
bom caso vc precise dessa parte na string vc pode fazer o seguinte retirar essa parte inicial do string realizar a operação e depois reconcatenar com esse parte de string R$
tenta isso, qq coisa fala ai
[]'s
B
biancuzziPJ
Já fiz o teste sim. Tirando o $ funciona legal.
O problema de remover essa parte da string e depois concatenar, é que tenho um texto muito grande (o “R$ 50,64” foi só um exemplo)
Na verdade eu tenho um Texto com descrição e preço de vários produtos.
E
ErkoPJ
cara eu tava testando o seu codigo tipo
olha oq aconteceu todas as letras que tinha dentro dos caracteres
que vc mandou trocar ele troca todas as letras pelo valor que vc mandou
em alguns casos ficou em loop infinito aki 8O
e com isso disparou erro no Matcher
ainda to procurando uma solução…
[]'s
E
ErkoPJ
ae ae ae ae
pronto tah ai uma função de replace de qq string para o seu texto
100% redondinho e operecional
segue o código e esse eu aguarantio :razz:
StringValor="R$ 50,64";//Vem do BancoStringmsgEmail="[VALOR_PRODUTO] Valor do Produto: [VALOR_PRODUTO] qualquer coisa custa mais [VALOR_PRODUTO]";Stringtroca="[VALOR_PRODUTO]";inttrocaLength=troca.length();StringmsgEmailAtualizado="";for(inti=0;i<msgEmail.length();i++){Stringtemp=msgEmail.substring(i,i+trocaLength);if(temp.equals(troca)){msgEmailAtualizado+=Valor;i=i+(trocaLength-1);}else{msgEmailAtualizado+=""+msgEmail.charAt(i);}}System.out.println(msgEmailAtualizado);msgEmail=msgEmailAtualizado;
bom qq coisa é soh falar q a equipe PJ de plantão ajuda como pode
[]'s
B
biancuzziPJ
Faaaala…
Então…
Eu já tinha pensado em fazer algo assim, mas é que achei meio “bichado” ter que fazer uma função, e buscar em todo o texto o que quero substituir.
Tecnicamente o replace teria q dar conta
8O
E
ErkoPJ
bom tecnicamente é uma coisa
mas na pratica é outra
eu tambem tentei usar o replace normal
mas naum funcionava direito então resolvi
ler o codigo fonte da classe String
e vi que o replace não muda palavras inteiras
mas apenas os caracteres que vc indica, cada caractere
ele substitui por um outro caractere
com isso dependendo da forma que vc montar o seu replace
ele fica em um laço infinito de susbtituição de caractere
e consequencia gera erro…
ps.: se vc for ver como são os codigos que realizam
o find replace em strings, vc vai notar que não é muito diferente desse
codigo que eu mandei ai :???:
ps.: uma dica de algo que eu faço, sempre que eu estou com duvida quanto ao funcionamento de algo em java eu leio o fonte da classe para
entender oq a classe pode fazer e como ela processa oq eu quero
[]´s
D
diegodrumondPJ1 like
Tecnicamente não. O replaceAll funciona sim. Soh q ele utiliza “Expressões regulares”(ou regular expression se preferir, regex). A classe responsável por isso é a java.util.regex.Pattern. O que acontece eh o seguinte: essa classe entende que o $ é o final de uma linha. Então por exemplo se vc quer trocar $ por A, ele entende que A ira ficar no lugar do \n. Entendeu? A melhor coisa que vc faz eh entrar aki http://java.sun.com/j2se/1.5.0/docs/api/index.html e dar uma olhada na documentacao… de inicio vc ficara um pouco confuso… mas dpois vc vai descobrir que isto eh mto util… espero ter ajudado… flws
D
diegodrumondPJ
“AnjoSupremo”:
bom tecnicamente é uma coisa
mas na pratica é outra
eu tambem tentei usar o replace normal
mas naum funcionava direito então resolvi
ler o codigo fonte da classe String
e vi que o replace não muda palavras inteiras
mas apenas os caracteres que vc indica, cada caractere
ele substitui por um outro caractere
com isso dependendo da forma que vc montar o seu replace
ele fica em um laço infinito de susbtituição de caractere
e consequencia gera erro…
ps.: se vc for ver como são os codigos que realizam
o find replace em strings, vc vai notar que não é muito diferente desse
codigo que eu mandei ai :???:
ps.: uma dica de algo que eu faço, sempre que eu estou com duvida quanto ao funcionamento de algo em java eu leio o fonte da classe para
entender oq a classe pode fazer e como ela processa oq eu quero
[]´s
Antes de olhar o codigo fonte de uma olhada na documentacao… eh mais rapido e pode ser util!
A
Andre.flu1 like
Eu resolvi com este método, depois faço o replace que quiser com o texto tratado.
publicstaticStringtratarSifraoTextoReplace(Stringtexto){
StringtextoResp=texto;for(inti=0; i < texto.length(); i++) {charc=texto.charAt(i);if(c=='$'){
textoResp=textoResp.substring(0,i)+"\\$"+textoResp.substring(i+1);}
}
returntextoResp;}