0

に似たJava解析ライブラリはありDecimalFormatますか?DecimalFormat正規表現ではやりたいことができません。

私はできる必要があります:

  • 整数のみを解析します(DecimalFormatには、単なるパターンよりも多くの設定が必要です)
  • 小数を解析します(丸めなしで正確に)
  • 123,456.789のような数値を解析します。(###、###。###のDecimalFormatは、「123456789」も受け入れます)
4

2 に答える 2

0

それを文字列のように扱い、トークン化してみることができます。

str.split("\\.") は小数側を分割し、それを精度に合わせてサブストリング化し、数値側で split(",") できます

ただし、これはかなりの手動解析作業です...

于 2013-03-12T22:23:48.567 に答える
0

正規表現を使用しますNumberFormat

Map<Pattern,NumberFormat> POSSIBLE_FORMATS = ...;
String input = ...;
Number value = null;
for (Map.Entry<Pattern,NumberFormat> possible : POSSIBLE_FORMATS.entrySet()) {
  if (possible.getKey().matcher(input).matches()) {
    value = possible.getKeValue().parse(input);
    break;
  }
}
if (value == null) {
  throw new IllegalArgumentExcption("no valid input format: " + input);
}
于 2013-03-12T23:20:27.413 に答える