【发布时间】:2013-02-13 17:41:06
【问题描述】:
我有一个字符串,我正试图将其解析为 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);
}
}
【问题讨论】:
-
您没有描述输入字符串的格式。真的很奇怪,不能使用 DecimalFormat 实例来解析字符串吗?如果不是,你为什么要通过自己操纵字符串来重新发明轮子?
-
这些值由用户输入。这些值非常类似,$5,000.00, 5,000.00, 5000.00, 5000, -5000.00, (5000.00), ($5000.00), (-5000.00), ($-5000.00)。最后,它们需要是 5000.00、(-5000.00)、-5000.00,以便它们可以被传递成一个大数。
-
@GJ13,我看过那个帖子,但我不明白该格式会如何去除不需要的字符。
标签: java