这取决于你将什么定义为特殊字符,但是,请尝试replaceAll(...) :String result = yourString.replaceAll("[-+.^:,]","");
请注意,^字符不能是列表中的第一个字符,因为您必须要转义它,否则它将意味着"除了这些字符之外的任何字符"。
另一个注意:-字符需要是列表中的第一个或最后一个,否则必须转义它。
因此,为了保持一致性而不依赖于字符定位,你可能需要转义正规表达式(以下列表不完整,因此请注意(,{,$等等等其他字符)中具有特殊含义的所有字符:String result = yourString.replaceAll("[-+.^:,]","");
如果你想去掉所有标点和符号,请尝试以下正规表达式: p{P}p{S} (记住,在Java字符串中,必须转义斜杠: "p{P}p{S}" )。
第三种方法可能是这样的,如果你可以准确地定义字符串中应留下的内容,请执行以下操作:String result = yourString.replaceAll("[^ws]","");
这意味着:替换不是单词字符(在任何情况下,a-z,0-9或)或空格的所有内容。
编辑:请注意,有两种其他模式可能会有所帮助,但是,我不能全部解释,所以,看看regular-expressions.info的参考部分。String result = yourString.replaceAll("[^p{L}p{Z}]","");
正规表达式匹配任何语言中不是字母的所有内容,而不是分隔符(空格,linebreak等等),注意,你不能使用[P{L}P{Z}] (大写p意味着没有那个属性),因为这意味着"不是字母或非空格",因为字母不是空格。
有关Unicode的其他信息
有些unicode字符可能会导致问题,因为不同的方法将它们编码为(作为单个代码点或代码点的组合),请参考regular-expressions.info了解更多信息。