我有一个字符串,我试图将其解析为 BigDecimal。我正在使用以下正则表达式来去除除 -,.()$ 之外的所有非货币符号。一旦它被剥离,我就会尝试用剩余的值创建一个 BigDecimal。当括号中出现负值时,问题就开始了。有人对如何修复此实例有任何建议吗?
(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);
}
}