如何在java中将包含逗号的数字字符串解析为整数?

时间:2012-08-15 16:41:10

标签: java exception number-formatting

当我尝试使用NumberFormatException解析265,858时,我收到Integer.parseInt()

有没有办法将其解析为整数?

7 个答案:

答案 0 :(得分:66)

这个逗号是小数分隔符还是这两个数字?在第一种情况下,您必须提供使用逗号作为小数分隔符的LocaleNumberFormat类:

NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")

这导致265.858。但是使用美国语言环境,您将获得265858

NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858")

那是因为在法国他们把逗号视为小数分隔符,而在美国则是分组(千)分隔符。

如果它们是两个数字 - String.split()它们并且独立地解析两个单独的字符串。

答案 1 :(得分:19)

您可以在将,解析为int:

之前将其删除
int i = Integer.parseInt(myNumberString.replaceAll(",", ""));

答案 2 :(得分:10)

如果是一个号码&如果要删除分隔符,NumberFormat将为您返回一个数字。使用getNumberInstance方法时,请确保使用正确的区域设置。

例如,某些Locales将逗号和小数点交换为您可能习惯的内容。

然后只需使用intValue方法返回一个整数。你必须将整个东西包装在try / catch块中,以解释Parse Exceptions。

try {
    NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
    ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
    //Handle exception
}

答案 3 :(得分:3)

一种选择是删除逗号:

"265,858".replaceAll(",","");

答案 4 :(得分:2)

点击给我的第一件事,假设这是一个数字,是......

String number = "265,858";
number.replaceAll(",","");
Integer num = Integer.parseInt(number);

答案 5 :(得分:2)

或者您可以使用NumberFormat.parse,将其设置为仅整数。

http://docs.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html#parse(java.lang.String

答案 6 :(得分:0)

试试这个:

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)));