我正在从给定的 String-s 中解析出 Long 值。
Long.valueOf()
和 Long.parseLong()
将不起作用 - 因为这样的字符串 str
的格式为 1,234,567并且可以被空格包围。
我可以通过处理字符串以将其转换为裸数字来解决这个问题——然后解析出该值。所以 - 它会像
str.trim();
String tempArray [] = str.split(",");
str = "";
for (String s:tempArray)
str+=s;
但是,必须有更好的方法来做到这一点。这是什么?
最佳答案
您可以使用 NumberFormat
在这里,适当的 Locale
. US 语言环境在这里就足够了。不过,您必须注意空格。
String str = "1,234,567";
NumberFormat format = NumberFormat.getInstance(Locale.US);
System.out.println(format.parse(str.replace(" ", "")));
您甚至可以使用 DecimalFormat
这是稍微更强大。您可以添加任何分组或小数分隔符:
DecimalFormat decimalFormat = new DecimalFormat();
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setGroupingSeparator(',');
decimalFormat.setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(decimalFormat.parse(str.replace(" ", "")));
关于java - 从具有千位分隔符的字符串中解析数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080316/