在java中解析货币字符串

nob*_*ody 7 java string internationalization

假设我有一个字符串,它是等供给"$123,456,56.25""123'456.67"或与此类似(用数字和小数点,一些分隔符像,或者'还是其他什么东西是不可预测的).我需要编写一个方法,它接受类似上面的参数并返回一个类似于"12345656.25"或的字符串"123456.67".

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

注意:我知道要检查每个索引并检查它是否为其重新调整true,Character.isDigit(charAtInedx)或者if(charAtInedx == '.') 我在寻找效率和可读性方面的更优化解决方案

谢谢.

Sea*_*oyd 14

String newStr = oldStr.replaceAll("[^\\d.]+", "")
Run Code Online (Sandbox Code Playgroud)

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

  • @jarnbjo请重新阅读问题:用数字和**小数点**和一些分隔符 (2认同)

Ala*_*eet 6

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

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

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