Read an excerpt from a String

-4

As you have seen my question above, I want to get only one part that interests me from a String, for example, I have a String preco whose text is R$ 20,00 , how do I get only the number? Another question is that if I try to add a separate number with a comma and not by a point it gives an error?

Doubt of many beginners in Java ...

    
asked by anonymous 03.04.2016 / 02:09

2 answers

4
    public static void main(String []args) throws ParseException {
       String preco = "R$ 20,00";
       //função substring retorna uma nova string apartir do índice passado para ela.
       //a função trim retira espaços que podem porventura ficar na nova String
       String valor = preco.substring(2).trim(); //20,00

       //NumberFormat do Locale default
       NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt", "BR"));
       //converte um número com vírgulas a partir de uma String para float
       float number = nf.parse(valor).floatValue(); //20.0

       //quando for fazer a soma faça um cast que não ocasionará erro se não colocar o ponto
       float soma = (float) (number + 4.4); //24.4
       float soma1 = (float) (number + 4); //24.0
    }

References

03.04.2016 / 02:47
-1

Regarding catching a part of a String, you can use a Substring for this. Let's also change the comma per point to work in float and perform the desired calculation.

would look like this:

 public static void main(String []args){
    String preco= "R$20,00";
    int um;
    int dois;

    //pega numeros a esquerda da virgula. . .
    um = preco.indexOf("$");
    dois = preco.lastIndexOf(",");
    String precoX = preco.substring(um + 1, dois);
    System.out.println("precoFinal" + precoX.toString());

    //Numeros a direita da Virgula. . .
    um = preco.indexOf(",");
    dois = preco.lastIndexOf(preco.charAt(preco.length() - 1));
    String precoY = preco.substring(um + 1, dois + 1);
    System.out.println("precoFinal" + precoY.toString());

    //Preco pronto para ser convertido. . .
    String precoFinal = OrganizaNumero(precoX, precoY, ".");//até esta etapa, coloquei o ponto no lugar da virgula e tirei o R$ da string. . .


    //converte precoFinal pra float. . .
    float f = Float.parseFloat(precoFinal.toString());

    //soma com outro float. . .
    f = f + 30.50f;

    //transforma novamente em String. . .
    String valorSomado = Float.toString(getFloat(f));
    System.out.println("string" + valorSomado.toString());


 }

 public static float getFloat(float x){return x;}
 public static String organizaNumero(String x, String y, String z){return "" + x.toString() + z.toString() + y.toString();}
    
03.04.2016 / 02:45