带java.text.DecimalFormat的可选加号

带java.text.DecimalFormat的可选加号,java,number-formatting,Java,Number Formatting,我想用加号、减号或无号解析Java中的十进制数,并获得一个BigDecimal的实例。这可以通过调用构造函数newbigdecimal(string)来实现。它为以下所有字符串生成适当的结果: "1", "12", "123", "123.0", "+123.0", "-123.0", "+123", "-123" 但是,我需要根据特定的区域设置解析字符串,即使用逗号-小数分隔符。有没有一种方法可以根据特定的语言环境解析所有这些数字 我尝试了NumberFormat和DecimalFormat

我想用加号、减号或无号解析Java中的十进制数,并获得一个
BigDecimal
的实例。这可以通过调用构造函数
newbigdecimal(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
。但是,加号可以在模式中指定为可选吗?

您可以创建接受或更好地要求前导“+”的十进制格式

但是,前缀是可选的,因此对您的情况没有帮助。
作为一个非常简单的解决方案,在将字符串传递给DecimalFormats解析方法之前,如果字符串以“+”字符开头,那么为什么不检查(修剪过的)字符串,在这种情况下,在将字符串传递给DecimalFormats解析方法之前,检查前导“+”。

请参见此问题:@Garry在建议的stackoverflow问题中,使用了
NumberFormat
/
DecimalFormat
。但是,可选的加号没有被处理。带加号的数字和不带符号的数字有什么区别?@Garry
123
+123
都有相同的值,但我想接受这两种格式,如
新的BigDecimal(String)
所做的。但是,
DecimalFormat
可以配置为接受带强制加号的正值,也可以配置为接受不带加号的正值。它无法配置为处理可选的加号。哦,那些吸盘,为什么它将0格式化为“+0”,0既不是正数也不是负数
    DecimalFormat f (DecimalFormat)NumberFormat.getNumberInstance(new Locale(...));
    f.setPositivePrefix("+");
    f.parse("+123");