从具有千位分隔符的字符串中解析数字
Parsing a number from a string with thousands seperators
我正在从给定的 String-s 中解析出 Long 值。
Long.valueOf()
和 Long.parseLong()
不起作用 - 因为这样的字符串 str
的格式为 1,234,567 并且可以用空格包围。
我可以通过处理 String 使其成为裸数字来解决这个问题——然后解析出该值。所以 - 它会像
str.trim();
String tempArray [] = str.split(",");
str = "";
for (String s:tempArray)
str+=s;
但是,必须有更好的方法来做到这一点。这是什么?
当然可以:)
String newStr = str.replaceAll(",","");
删除偶数空格:
String newStr = str.replaceAll(",","").replaceAll(" ","");
而且可以马上传给Long
Long myLong = Long.valueOf(str.replaceAll(",","").replaceAll(" ",""));
您可以使用 NumberFormat
here, with appropriate 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(" ", "")));
replaceAll
方法可以去掉逗号,trim
去掉白色space:
Long.parseLong(str.trim().replaceAll(",", ""))
我正在从给定的 String-s 中解析出 Long 值。
Long.valueOf()
和 Long.parseLong()
不起作用 - 因为这样的字符串 str
的格式为 1,234,567 并且可以用空格包围。
我可以通过处理 String 使其成为裸数字来解决这个问题——然后解析出该值。所以 - 它会像
str.trim();
String tempArray [] = str.split(",");
str = "";
for (String s:tempArray)
str+=s;
但是,必须有更好的方法来做到这一点。这是什么?
当然可以:)
String newStr = str.replaceAll(",","");
删除偶数空格:
String newStr = str.replaceAll(",","").replaceAll(" ","");
而且可以马上传给Long
Long myLong = Long.valueOf(str.replaceAll(",","").replaceAll(" ",""));
您可以使用 NumberFormat
here, with appropriate 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(" ", "")));
replaceAll
方法可以去掉逗号,trim
去掉白色space:
Long.parseLong(str.trim().replaceAll(",", ""))