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.
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.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
*/
public final class Ver {
/**
* Simbolos especificos do Dolar Americano
*/
private static final DecimalFormatSymbols DOLAR = new DecimalFormatSymbols(Locale.US);
/**
* Mascara de dinheiro para Dolar Americano
*/
public static final DecimalFormat DINHEIRO_DOLAR = new DecimalFormat("¤ ###,###,##0.00",DOLAR);
/**
* Simbolos especificos do Euro
*/
private static final DecimalFormatSymbols EURO = new DecimalFormatSymbols(Locale.GERMANY);
/**
* Mascara de dinheiro para Euro
*/
public static final DecimalFormat DINHEIRO_EURO = new DecimalFormat("¤ ###0.00",EURO);
/**
* Locale Brasileiro
*/
private static final Locale BRAZIL = new Locale("pt","BR");
/**
* S�mbolos especificos do Real Brasileiro
*/
private static final DecimalFormatSymbols REAL = new DecimalFormatSymbols(BRAZIL);
/**
* Mascara de dinheiro para Real Brasileiro
*/
public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat("###,###,##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
*/
public static String mascaraDinheiro(double valor, DecimalFormat moeda){
return moeda.format(valor);
}
}
De repente vc não precise nem utilizar o replaceAll.
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$?
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:
String simbolo = "R$"; // (ou então US$, € etc.)
simbolo = simbolo.replaceAll ("\$", "\$"); // veja a documentação e me explique porque funciona ;-)