Formatação Moeda

5 respostas
jcgmarlboro

Boa noite a todos,
gostaria de ajuda, pois revirei o google e não encontrei uma resposta satisfatória.
Bom estou convertendo um Double para Moeda utilizando a seguinte classe, esta que encontrei no forúm:

public class Moeda {

    static Currency currency = Currency.getInstance("BRL");
    static DecimalFormat formato = new DecimalFormat("#,##0.00");
    double valor;

    public Moeda(String valor) throws ParseException{
        this.valor = Double.parseDouble(valor.replaceAll("\.", "").replaceAll(",", "."));
    }

    public Moeda(double valor){
        this.valor = valor;
    }

    @Override
    public String toString(){
        return currency.getSymbol()+formato.format(valor);
    }

Bom convertido o Double para moeda perfeitamente exibo ele num jtextfield. Agora é que esta o problema como remover o R$ para poder realizar calculos com o valor.
Tentei o REPLACEALL só que ele não consegue remover o $.
Obrigado

5 Respostas

adriano_si

cara… não é que ele não acha o cifrão é que o cifrão é um âncora da expressão regular e o que você passa ao replaceAll é um Regex…

Pesquise sobre expressões regulares e você vai conseguir usar o replaceAll ao seu favor… Se não achar a resposta final, volte aqui, mas volte com uma tentativa, heueheueheuehu…

Abs []

Jesuino_Master

Oi,

veja se isso resolve:

import java.text.*;
import java.util.Currency;

public class Moeda {

    private Currency currency = Currency.getInstance("BRL");
    private DecimalFormat formato = new DecimalFormat("#,##0.00");
    private double valor;

    public Moeda(String valor) throws ParseException{
        this.valor = Double.parseDouble(valor.replaceAll("R|\$| ", "").replaceAll(",", "."));
    }
	
	public double getValor(){
		return this.valor;
	}

    public Moeda(double valor){
        this.valor = valor;
    }

    @Override
    public String toString(){
        return currency.getSymbol()+formato.format(valor);
    }
	
	public static void main(String args[]) throws ParseException{
		Moeda m = new Moeda("R$ 25,00");
		System.out.println(m);
		System.out.println(m.getValor());		
	}
}

Modifiquei um pouco seu code, não entendi pq o Currency era static…

[]'s

adriano_si

poutz Willian… ele já ia ganhar bastante pesquisando sobre o assunto…

Agora já era…

Jesuino_Master

adriano_si:
poutz Willian… ele já ia ganhar bastante pesquisando sobre o assunto…

Agora já era…

Só se ele aceitar resposta pronta sem pesquisar ou sem entender o que está sendo feito :slight_smile:

Por mais que não seja certo fazer isso, no final depende da pessoa que perguntou se ela vai tirar proveito ou não!

jcgmarlboro

Antes de mais nada, gostaria de agradecer as respostas.
Meu caro já revirei este google de ponta cabeça para encontrar uma solução. Só não pensei que colocando 2 \ resolveria o problema do Replace do $.

Obrigado.

Criado 18 de fevereiro de 2011
Ultima resposta 19 de fev. de 2011
Respostas 5
Participantes 3