我正在解析给定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;
但是,必须有更好的方法来做到这一点。它是什么?
答案 0 :(得分:5)
您可以在此使用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(" ", "")));
答案 1 :(得分:4)
当然有可能:)
String newStr = str.replaceAll(",","");
删除偶数空格:
String newStr = str.replaceAll(",","").replaceAll(" ","");
你可以立即将它传递给Long
Long myLong = Long.valueOf(str.replaceAll(",","").replaceAll(" ",""));
答案 2 :(得分:4)
replaceAll
方法可以删除逗号,trim
删除空格:
Long.parseLong(str.trim().replaceAll(",", ""))