我需要编写一个模式来删除货币符号和逗号。例如Fr.-145,000.01
之后模式匹配器应返回 -145000.01
。
我正在使用的模式:
^[^0-9\\-]*([0-9\\-\\.\\,]*?)[^0-9\\-]*$
这将返回-145,000.01
然后我删除逗号得到-145000.01
,我想问是否有可能我改变模式并直接得到-145000.01
String pattern = "^[^0-9\\-]*([0-9\\-\\.\\,]*?)[^0-9\\-]*$";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
if(m.matches()) {
System.out.println(m.group(1));
}
我希望输出可以解析逗号
最佳答案
您可以使用 String.replaceAll() 和更简单的正则表达式来简化它(前提是您期望输入相当合理,即数字中没有嵌入多个小数点或多个负号)
String str = "Fr.-145,000.01";
str.replaceAll("[^\\d-.]\\.?", "")
如果您要走这条路线,我会通过使用 BigDecimal
或 Double
解析输出来对其进行健全性检查。
关于java - 将两个模式合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670551/