在java中解析货币字符串

假设我提供的字符串类似于"$123,456,56.25" "123'456.67" "$123,456,56.25""123'456.67"或类似的东西(带有数字和小数点以及某些分隔符,'或其他不可预测的东西)。 我需要编写一个方法,它接受类似上面的参数并分别返回一个字符串,如"12345656.25""123456.67"

能否请您建议最有效和最易读的代码来实现这一目标?

注意:我知道通过每个索引并检查它的Character.isDigit(charAtInedx)是否为Character.isDigit(charAtInedx)if(charAtInedx == '.')是真的我在寻找效率和效率方面的更优化的解决方案可读性

谢谢。

 String newStr = oldStr.replaceAll("[^\\d.]+", "") 

这将删除任何不是数字或句点的字符

如果要正确处理货币值,您需要查看NumberFormat类,特别是您的CaseFormat.parse(String) 。 以下文章还讨论了在Java中处理资金的问题(和解决方案):

http://www.javapractices.com/topic/TopicAction.do?Id=13

其他相关的类包括: 货币 ,当然还有BigDecimal 。