我收到NumberFormatException
,当我尝试用Integer.parseInt()
解析265,858。如何将包含逗号的数字字符串解析为java中的整数?
有没有什么办法将它解析为一个整数?
我收到NumberFormatException
,当我尝试用Integer.parseInt()
解析265,858。如何将包含逗号的数字字符串解析为java中的整数?
有没有什么办法将它解析为一个整数?
这是逗号小数点分隔符或者是这两个数字?在第一种情况下,你必须提供Locale
到NumberFormat
类使用逗号作为小数点分隔符:
NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
这导致265.858
。但是,使用美国区域,那么你会得到265858
:
NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858")
这是因为在法国他们对待逗号作为小数点分隔符,而在美国 - 作为分组(千)分隔符。
如果它们是两个数字 - String.split()
它们并独立解析两个独立的字符串。
“将其解析为一个整数”几乎缩小了解释:) – 2012-08-15 16:46:12
第三个选项:它是一个分组分隔符。 – 2012-08-15 16:46:39
是:一个整数,千位分隔符。 – 2012-08-15 16:47:05
一种办法是剥去逗号:
"265,858".replaceAll(",","");
更简单快捷的解决方案:'replace'代替'replaceAll'。 – 2012-08-15 16:49:17
试试这个:
String x = "265,858 ";
x = x.split(",")[0];
System.out.println(Integer.parseInt(x));
编辑: 如果你希望它四舍五入到最接近的整数:
String x = "265,858 ";
x = x.replaceAll(",",".");
System.out.println(Math.round(Double.parseDouble(x)));
在将其解析为int之前,您可以删除,
01:
int i = Integer.parseInt(myNumberString.replaceAll(",", ""));
其点击对我来说,假设这是一个单一的数字,是第一件事...
String number = "265,858";
number.replaceAll(",","");
Integer num = Integer.parseInt(number);
或者您可以使用NumberFormat.parse
,将其设置为仅限整数。
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html#parse(java.lang.String)
如果它是一个&要删除分隔号,NumberFormat
将一些回报给你。使用getNumberInstance
方法时,请确保使用正确的区域设置。
例如,某些区域设置将逗号和小数点替换为您可能习惯的值。
然后只需使用intValue
方法返回一个整数。尽管如此,你必须将所有东西包装在try/catch块中,以解释Parse Exceptions。
try {
NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
//Handle exception
}
问题并不清楚,'''是什么?数千或十进制分隔符? – 2012-08-15 16:44:06
我认为这是...有没有什么办法可以将它解析成** an **整数? – SiB 2012-08-15 16:46:28
还是2 csv格式的整数? 265和858? – 2012-08-15 16:47:41