Regex para cobrir valores

5 respostas
surfzera

Pessoal, estou precisando de um Regex para cobrir os seguintes valores:

String valor1 = executaConversao("0.5000");
 String valor2 = executaConversao("5.0000");
 String valor3 = executaConversao("0.0001");
 String valor4 = executaConversao("1.0000");
 String valor5 = executaConversao("5000.0025");
 String valor6 = executaConversao("5001.0025");
 String valor7 = executaConversao("5001.0000");
        
 Assert.assertEquals("0.5000", valor1);
 Assert.assertEquals("5", valor2);
 Assert.assertEquals("0.0001", valor3);
 Assert.assertEquals("1", valor4);
 Assert.assertEquals("5000.0025", valor5);
 Assert.assertEquals("5001.0025", valor6);
 Assert.assertEquals("5001", valor7);

Tentei fazer assim mais sem sucesso:

public String executaConversao(String valorInicio) {
        Pattern p = Pattern.compile("\\d+\\.^0{4}");
        Matcher m = p.matcher(valorInicio);

        if (m.find()) {
            return valorInicio;
        } else {
            DecimalFormat df = new DecimalFormat();
            String valorFinal = df.format(Double.parseDouble(valorInicio));
            return valorFinal;
        }
}

5 Respostas

E

Que raio de conversão maluca é essa em que você espera que o valor 0,5 seja convertido para 0.5000 mas o valor 5,0 seja convertido para 5 (não 5.0000 ) ?

surfzera

Ou seja quero tirar dos valores o .0000 quando tiver somente zeros apos o ponto

surfzera

Então é maluca mesmo :slight_smile: Eu quero que o valor que esta vindo do banco por exemplo : 5001.0000 seja convertindo pra 5001 quando tive somente zeros apois o ponto. Se tiver vindo 5001.0025 venha o proprio valor.

Outro exemplo se tiver vindo do banco 5.0000 deve retornar somente 5
Outro exemplo se tiver vindo do banco 5.0001 deve retornar o proprio valor ou seja 5.0001

Não sei se fui claro. Mais qualquer ajuda é bem vinda.

Rodrigo_Sasaki

Não entendi o ^ antes do 0 no seu pattern.

surfzera

Consegui fazendo algumes ajustes:

@Test
    public void conversarTest() {
        String valor1 = executaConversao("0.5000");
        String valor2 = executaConversao("5.0000");
        String valor3 = executaConversao("0.0001");
        String valor4 = executaConversao("1.0000");
        String valor5 = executaConversao("5000.0025");
        String valor6 = executaConversao("5001.0025");
        String valor7 = executaConversao("5001.0000");
        
        Assert.assertEquals("0.5000", valor1);
        Assert.assertEquals("5", valor2);
        Assert.assertEquals("0.0001", valor3);
        Assert.assertEquals("1", valor4);
        Assert.assertEquals("5000.0025", valor5);
        Assert.assertEquals("5001.0025", valor6);
        Assert.assertEquals("5001", valor7);
    }
public String executaConversao(String valorInicio) {
        Pattern p = Pattern.compile("\\d+\\.0{4}");
        Matcher m = p.matcher(valorInicio);

        if (m.find()) {
            DecimalFormat df = new DecimalFormat();
            String valorFinal = df.format(Double.parseDouble(valorInicio));
            return valorFinal.replaceAll(",", "");
        } else {
            return valorInicio;
        }
    }
Criado 23 de julho de 2012
Ultima resposta 23 de jul. de 2012
Respostas 5
Participantes 3