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

viv*_*nam 34 java exception number-formatting

NumberFormatException当我尝试解析265,858时,我得到了Integer.parseInt().

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

Tom*_*icz 71

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

NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
Run Code Online (Sandbox Code Playgroud)

这导致了265.858.但是使用美国语言环境你会得到265858:

NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858")
Run Code Online (Sandbox Code Playgroud)

那是因为在法国,他们将逗号视为小数分隔符,而在美国 - 作为分组(千)分隔符.

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

  • 第三种选择:它是一个分组分隔符. (4认同)
  • "将其解析为整数"几乎缩小了解释:) (3认同)

mic*_*cha 19

您可以在将其,解析为int之前将其删除:

int i = Integer.parseInt(myNumberString.replaceAll(",", ""));
Run Code Online (Sandbox Code Playgroud)


ano*_*ave 11

如果它是一个数字并且您想要删除分隔符,NumberFormat则会向您返回一个数字.使用该getNumberInstance方法时,请确保使用正确的Locale .

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

然后只需使用该intValue方法返回一个整数.但是,您必须将整个事物包装在try/catch块中,以解释Parse Exceptions.

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


Tim*_*der 5

一种选择是去掉逗号:

"265,858".replaceAll(",","");
Run Code Online (Sandbox Code Playgroud)