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 回答