带 java.text.DecimalFormat 的可选加号
Optional plus sign with java.text.DecimalFormat
我想解析 Java 中带加号、减号或无符号的十进制数,并获得 BigDecimal
的实例。这可以简单地通过调用构造函数 new BigDecimal(string)
来实现。它为以下所有字符串生成适当的结果:
"1", "12", "123", "123.0", "+123.0", "-123.0", "+123", "-123"
但是,我需要根据特定的语言环境解析字符串,即使用逗号小数点分隔符。有没有一种方法可以针对特定语言环境解析所有这些数字?
我尝试了 NumberFormat
和 DecimalFormat
但无法正确配置。
final DecimalFormat valueParser = (DecimalFormat) NumberFormat.getNumberInstance(new Locale("cs"));
valueParser.setParseBigDecimal(true);
这样valueParser
不接受加号。有一个选项可以将模式设置为 DecimalFormat
。但是,加号是否可以在模式中指定为可选?
您可以创建接受或更好地需要前导“+”的 DecimalFormat。
DecimalFormat f (DecimalFormat)NumberFormat.getNumberInstance(new Locale(...));
f.setPositivePrefix("+");
f.parse("+123");
但是前缀 不是 可选的,因此它对您的情况没有帮助。
作为一个非常简单的解决方案,为什么不检查(修剪过的)字符串是否以“+”字符开头,在这种情况下,在将字符串传递给 DecimalFormats 解析方法之前剪切前导“+”。
我想解析 Java 中带加号、减号或无符号的十进制数,并获得 BigDecimal
的实例。这可以简单地通过调用构造函数 new BigDecimal(string)
来实现。它为以下所有字符串生成适当的结果:
"1", "12", "123", "123.0", "+123.0", "-123.0", "+123", "-123"
但是,我需要根据特定的语言环境解析字符串,即使用逗号小数点分隔符。有没有一种方法可以针对特定语言环境解析所有这些数字?
我尝试了 NumberFormat
和 DecimalFormat
但无法正确配置。
final DecimalFormat valueParser = (DecimalFormat) NumberFormat.getNumberInstance(new Locale("cs"));
valueParser.setParseBigDecimal(true);
这样valueParser
不接受加号。有一个选项可以将模式设置为 DecimalFormat
。但是,加号是否可以在模式中指定为可选?
您可以创建接受或更好地需要前导“+”的 DecimalFormat。
DecimalFormat f (DecimalFormat)NumberFormat.getNumberInstance(new Locale(...));
f.setPositivePrefix("+");
f.parse("+123");
但是前缀 不是 可选的,因此它对您的情况没有帮助。 作为一个非常简单的解决方案,为什么不检查(修剪过的)字符串是否以“+”字符开头,在这种情况下,在将字符串传递给 DecimalFormats 解析方法之前剪切前导“+”。