是否有类似的 Java 解析库DecimalFormat
?我无法用DecimalFormat
正则表达式做我想做的事。
我需要能够:
- 仅解析一个整数(DecimalFormat 需要更多设置而不仅仅是模式)
- 解析小数(精确无舍入)
- 解析像 123,456.789 这样的数字。(###,###.### 的 DecimalFormat 也接受“123456789”)
是否有类似的 Java 解析库DecimalFormat
?我无法用DecimalFormat
正则表达式做我想做的事。
我需要能够:
您可以尝试将其视为字符串并对其进行标记。
str.split("\\.") 将拆分小数侧,然后将其子串到您的精度,然后在数字侧您可以 split(",")
这是相当多的手动解析工作......
我会使用正则表达式和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);
}