string = str.replaceAll("\\W", " ")
Run Code Online (Sandbox Code Playgroud)
这将用""(空格)替换所有特殊字符.
但我尝试将短划线" - "排除为特殊字符.
这是我的尝试:
string = str.replaceAll("\\W[^-]", " ")
Run Code Online (Sandbox Code Playgroud)
但这不是我所期待的.
问:我该如何工作?
Qta*_*tax 10
如果你想匹配除了之外的所有字符\w,-你可以使用:
[^\w-]
Run Code Online (Sandbox Code Playgroud)
例如:
str.replaceAll("[^\\w-]+", " ")
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下, Qtax 的答案可能是最简单的,因为有一个内置的补集\W,即\w。但总的来说,了解 Java 的正则表达式引擎支持字符类中与&&运算符的“交集”是很有用的 - 你可以说
[\W&&[^-]]
Run Code Online (Sandbox Code Playgroud)
匹配既是 a\W 又是a 的单个字符[^-],即非单词字符但不是连字符。