web-dev-qa-db-ja.com

javaでコンマを含む数値文字列を整数に解析する方法は?

Integer.parseInt()で265,858を解析しようとすると、NumberFormatExceptionが表示されます。

整数に解析する方法はありますか?

33
vivek_jonam

このコンマは小数点区切り文字ですか、それともこれら2つの数字ですか?最初のケースでは、コンマを小数点として使用する LocaleNumberFormat クラスに指定する必要があります。

_NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
_

これは_265.858_になります。しかし、USロケールを使用すると、_265858_が得られます。

_NumberFormat.getNumberInstance(Java.util.Locale.US).parse("265,858")
_

これは、フランスではカンマを小数点として扱い、米国ではグループ化(千)区切りとして扱うためです。

これらが2つの数値である場合-String.split()それらであり、2つの別個の文字列を個別に解析します。

71

,は、intに解析する前に削除できます。

int i = Integer.parseInt(myNumberString.replaceAll(",", ""));
19
micha

数字が1つで、区切り文字を削除する場合、NumberFormatは数字を返します。 getNumberInstanceメソッドを使用する場合は、必ず正しいロケールを使用してください。

たとえば、一部のロケールでは、コンマと小数点を使い慣れたものに交換します。

次に、intValueメソッドを使用して整数を返します。ただし、Parse Exceptionsを考慮して、全体をtry/catchブロックでラップする必要があります。

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

1つのオプションは、コンマを削除することです。

"265,858".replaceAll(",","");
3
Tim Bender

これが単一の数字であると仮定して、私に最初にクリックするのは...

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

または、NumberFormat.parseを使用して、整数のみに設定することもできます。

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

2
John Gardner

これを試して:

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