【发布时间】:2017-04-05 09:40:05
【问题描述】:
我想从字符串中删除除数字和度数符号°之外的所有特殊字符。如何使用正则表达式来做到这一点?
我知道 .replaceAll("[^a-zA-Z0-9]+","") 会删除所有特殊字符,如何将度数符号放回?
【问题讨论】:
-
你为什么不把学位字符放在你的排除类中?
我想从字符串中删除除数字和度数符号°之外的所有特殊字符。如何使用正则表达式来做到这一点?
我知道 .replaceAll("[^a-zA-Z0-9]+","") 会删除所有特殊字符,如何将度数符号放回?
【问题讨论】:
您可以使用 unicode 字符:° 是 \u00b0。所以你的正则表达式可以是这样的:
[^a-zA-Z0-9\\u00b0]+
【讨论】:
您可以使用\W 并使用字符类减法:
.replaceAll("[\\W_&&[^°]]+","")
另一种方法是将度数符号添加到您拥有的否定字符类中,因为否定字符类匹配所有字符除了字符类中的字符:
.replaceAll("[^a-zA-Z0-9°]+","")
^
测试于:http://www.ocpsoft.org/tutorials/regular-expressions/java-visual-regex-tester/。
【讨论】:
_,您应该按照我在上面的模式中显示的那样添加它。否则,如果您应该将其从模式中删除。
(char) 0x00B0 + "C" 并将其附加到我的字符串中。