带有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解析方法之前,为什么不检查以(‘)字符开头的字符串(如果是这样),并且在这种情况下,请切掉前导’的字符串.
标签:number-formatting,java 来源: https://codeday.me/bug/20191120/2040980.html