我有幾個字符串包含非字母。在java中替換非撇號除撇號外
String A = "it's. (fish)[]//;!"
我想返回一個字符串,上面寫着:
it's fish
我已經使用了與string.replace()方法,但它是一個有點乏味。我也試過使用
A.replaceAll("\\W", "")
但它刪除了撇號。有一個簡單的方法來刪除所有非字母,同時保留撇號?
我有幾個字符串包含非字母。在java中替換非撇號除撇號外
String A = "it's. (fish)[]//;!"
我想返回一個字符串,上面寫着:
it's fish
我已經使用了與string.replace()方法,但它是一個有點乏味。我也試過使用
A.replaceAll("\\W", "")
但它刪除了撇號。有一個簡單的方法來刪除所有非字母,同時保留撇號?
您可以在這裏使用一個Java具體構造:
A.replaceAll("[\\W&&[^']]", "")
的具體構造這裏的字符類:x&&[y]
,意思是:匹配x
和y
。 y
可以是在角色類中有效的任何東西。
自Java 5以來可用,如果我記得正確。
您可以將'
添加到否定字符類\\w
。我注意到你沒有替換空格。然後也添加到字符類:
String A = "it's. (fish)[]//;!"
A = A.replaceAll("[^\\w' ]", "");
System.out.println(A); // it's fish
這將替換不在\\w
,'
或空格字符。
或者你可以使用字符類的交集和否定字符類:
[\\W&&[^' ]]
,但只在Java正則表達式引擎的工作原理。我不知道是否有任何其他正則表達式引擎支持這一點。
P.S:順便說一句,A
不是一個很好的變量名。
我該如何修改這個,這隻有在工作僅僅在1秒之後纔有效?例如,不fish'ss或魚'.. – lost9123193
我不明白你的問題。 –
如果字符串是「fish'sss」,它會返回「fish sss」,但如果是魚的話,它會返回魚的。 – lost9123193
你的交集不正確。應該是'[\\ W && [^']] @ –
@RohitJain感謝您的糾正,修正 – fge