从包含数千个分隔符的字符串中解析数字

use*_*742 3 java string numbers string-parsing

我正在解析给定String-s中的Long值.

Long.valueOf()并且Long.parseLong()不起作用 - 因为这样的String str的格式为1,234,567,并且可以用空格包围.

我可以通过处理String来使它成为裸数字 - 然后解析出值.所以 - 它会是这样的

str.trim(); 
String tempArray [] = str.split(","); 
str = ""; 
for (String s:tempArray)
    str+=s; 
Run Code Online (Sandbox Code Playgroud)

但是,必须有更好的方法来做到这一点.它是什么?

Roh*_*ain 6

你可以NumberFormat在这里使用,适当的Locale.美国的语言环境就足够了.你应该照顾空白.

String str = "1,234,567";
NumberFormat format = NumberFormat.getInstance(Locale.US);
System.out.println(format.parse(str.replace(" ", "")));
Run Code Online (Sandbox Code Playgroud)

你甚至可以使用DecimalFormat更强大的功能.您可以添加任何分组或小数分隔符:

DecimalFormat decimalFormat = new DecimalFormat();
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setGroupingSeparator(',');
decimalFormat.setDecimalFormatSymbols(decimalFormatSymbols);

System.out.println(decimalFormat.parse(str.replace(" ", "")));
Run Code Online (Sandbox Code Playgroud)