Voce sabe que replaceAll usa expressoes regulares, ne? O “illegal group reference” que ele te da vem disso. Qual o conteudo de thisLine a esse ponto?
danielpbvs
Oi,
Tive um problema parecido com esse e encontrei um código num desses fóruns java, não lembro qual, que resolveu meu problema. O código esta logo abaixo. Tenta utilizar ele como modelo.
importjava.text.DecimalFormat;importjava.text.DecimalFormatSymbols;importjava.text.NumberFormat;importjava.util.Locale;/** * Classe que padroniza a internacionalizacao de valores monetarios * @author Luiz Cavalcanti * @version 0.1 * @see java.util.Locale * @see java.text.DecimalFormat * @see java.text.DecimalFormatSymbols */publicfinalclassVer{/** * Simbolos especificos do Dolar Americano */privatestaticfinalDecimalFormatSymbolsDOLAR=newDecimalFormatSymbols(Locale.US);/** * Mascara de dinheiro para Dolar Americano */publicstaticfinalDecimalFormatDINHEIRO_DOLAR=newDecimalFormat("¤ ###,###,##0.00",DOLAR);/** * Simbolos especificos do Euro */privatestaticfinalDecimalFormatSymbolsEURO=newDecimalFormatSymbols(Locale.GERMANY);/** * Mascara de dinheiro para Euro */publicstaticfinalDecimalFormatDINHEIRO_EURO=newDecimalFormat("¤ ###0.00",EURO);/** * Locale Brasileiro */privatestaticfinalLocaleBRAZIL=newLocale("pt","BR");/** * S�mbolos especificos do Real Brasileiro */privatestaticfinalDecimalFormatSymbolsREAL=newDecimalFormatSymbols(BRAZIL);/** * Mascara de dinheiro para Real Brasileiro */publicstaticfinalDecimalFormatDINHEIRO_REAL=newDecimalFormat("###,###,##0.00",REAL);/** * Mascara texto com formatacao monetaria * @param valor Valor a ser mascarado * @param moeda Padrao monetario a ser usado * @return Valor mascarado de acordo com o padrao especificado */publicstaticStringmascaraDinheiro(doublevalor,DecimalFormatmoeda){returnmoeda.format(valor);}}
De repente vc não precise nem utilizar o replaceAll.
Ats.,
Daniel Pedra Branca
A
anaeckel
no replaceAll o conteúdo é:
R$ 13,00 para locale brasileiro
ou
€ 13,00 para locale holandês
Estou precisando usar o replaceAll porque estou substituindo todas as “##price_per_edition##” pelo valor encontrado.
Como poderia fazer para o replaceAll ignorar os simbolos € e R$?
Obrigada.
T
thingol
O que o CV está lhe querendo dizer é que o símbolo do real (R$) contém um caracter que é “mágico” para o replaceAll (que requer uma expressão regular, não uma string “fixa”).
Com o euro você teve sorte, já que não tem um “caracter mágico”. Mas com o real você vai ter problemas.
Se você estiver usando Java 5.0, use Pattern.quote() para transformar “R$” em “R\$” - pôr um “” antes do $ tira o caráter “mágico” do “$”, transformando-o em um caracter normal.
Se não estiver usando Java 5.0, você pode trocar o “$” por “\$” na mão, usando algo parecido com:
Stringsimbolo="R$";// (ou então US$, € etc.)simbolo=simbolo.replaceAll("\$","\$");// veja a documentação e me explique porque funciona ;-)