我有一些包含非字母的字符串。
String A = "it's. (fish)[]//;!"
我想返回一个字符串,上面写着:
it's fish
我使用了 String.replace() 方法,但它有点乏味。我也尝试过使用
A.replaceAll("\\W", "")
但它删除了撇号。有没有一种简单的方法可以在保留撇号的同时删除所有非字母?
您可以'
使用\\w
. 我注意到您没有替换空格。然后将其也添加到字符类中:
String A = "it's. (fish)[]//;!"
A = A.replaceAll("[^\\w' ]", "");
System.out.println(A); // it's fish
这将替换不是\\w
,'
或空格的字符。
或者您可以使用字符类和否定字符类的交集:
[\\W&&[^' ]]
但它仅适用于 Java 正则表达式引擎。我不知道是否有任何其他正则表达式引擎支持这一点。
PS:顺便说一句,A
不是一个很好的变量名。
您可以在此处使用 Java 特定的构造:
A.replaceAll("[\\W&&[^']]", "")
这里的具体构造是字符类:x&&[y]
,意思是:匹配x
和y
。y
可以是任何在字符类中有效的东西。
如果我没记错的话,从 Java 5 开始可用。