Java:如何仅保留字符串中的数字与小数点,去除其他字符?
解决正则过滤数字和小数点的问题
嘿,我来帮你搞定这个正则匹配的小问题!
你遇到的问题出在写的正则表达式上:distance.replaceAll("[^0-9 + \\.]", "") 里多了不必要的空格和+符号,而且小数点的转义也是多余的——在正则的字符类[]里,.就是普通字符,不需要加反斜杠转义。这就导致你的代码会错误保留空格和+,却没正确过滤掉其他非目标内容。
正确的实现方式
你需要把正则改成只排除非数字(0-9)和非小数点的字符,同时注意Java字符串不可变,要把replaceAll的返回值重新赋值给变量:
distance = distance.replaceAll("[^0-9.]", "");
举个例子验证
比如输入字符串是 "XYZ789.01!@#$%^",用上面的代码处理后,得到的结果就是 "789.01",完全符合你只保留数字和小数点的需求。
内容的提问来源于stack exchange,提问作者sosumi
相关产品推荐
相关产品推荐

