我有一个字符串,我试图解析成一个BigDecimal。我使用以下正则表达式来除去 - ,.()$之外的所有非货币符号。一旦它被剥离,我然后尝试创建一个剩余值的BigDecimal。问题在括号中出现负值时开始。有没有人对如何修复这个实例有任何建议?带负大括号的Java负大十进制值
(1000.00) fails
我假设我必须以某种方式将括号转换为负号。
代码示例。
public BigDecimal parseClient(Field field, String clientValue, String message) throws ValidationException {
if (clientValue == null) {
return null;
}
try {
clientValue = clientValue.replaceAll("[^\\d\\-\\.\\(\\)]", "");
return new BigDecimal(clientValue.toString());
} catch (NumberFormatException ex) {
throw new ValidationException(message);
}
}
您不描述输入字符串的格式。它真的很奇怪,你不能使用DecimalFormat实例来解析字符串?如果不是,你为什么试图通过自己操纵弦来重塑车轮? – jarnbjo 2013-02-13 17:55:47
这是否有帮助: http://stackoverflow.com/questions/2056400/format-negative-amount-of-usd-with-a-minus-sign-not-brackets-java – GJ13 2013-02-13 18:07:55
这些值是由a用户。这些值就是5000.00,5000.00,5000.00,5000,-5000.00,(5000.00),(5000.00),(-5000.00),(-5000.00)。最后,他们需要5000.00,(-5000.00),-5000.00,以便他们可以传入一个大的数字。 – 2013-02-13 19:09:20