字符串与货币符号浮动在Java中

时间:2018-03-13 13:27:34

标签: java regex type-conversion

我想将字符串(例如$ 2,480.00,$ 1.22)转换为浮点值(期望结果:2480.00,1.22)。 哪种方式最好呢? 通过循环,留下字符串数字和'。'或者也许是正则表达式?

3 个答案:

答案 0 :(得分:0)

您可以拆分字符串,然后根据需要使用您的数字:

        String str = "$2,480.00";
        str = str.replaceAll("[^-?0-9]+", " ");
        System.out.println(Arrays.asList(str.trim().split(" ")));

输出:

[2, 480, 00]

答案 1 :(得分:0)

使用NumberFormat

String s = "$2,480.00";
float num = NumberFormat.getInstance()
        .parse(s.substring(1))
        .floatValue();
System.out.println(num);

假设

我假设数字始终以货币符号

开头

为什么不删除,. s

如果你这样做,你可能会遇到国际号码格式的问题,其中一些会改变点和逗号的含义。

  

在加拿大英语中,句点用作小数点,标记(或空格)用于分隔三个数字。例如,26,000读取为26,000。

     

在法语和许多其他语言中,逗号表示小数,因此26,000读取为26。这与盎格鲁如何解释它有很大的不同!用法语写二万六千的正确方法是26 000或26000。   source

答案 2 :(得分:0)

在删除非数字和非点字符后,只需将字符串解析为float:

float money = Float.parseFloat("$2,480.00".replaceAll("[^\\d.]", ""));