2011-11-13 62 views
5

我需要刪除一個詞後面的標點符號。例如,應將word?!更改爲word,並將string:更改爲string如何刪除Java中單個單詞後面的所有標點符號?

編輯:該算法應該只能刪除字符串末尾的標點符號。字符串中的任何標點符號應保留。例如,doesn't;應該變成doesn't

+0

標點符號是否可以顯示在其他有效的位置?說,如果你有一個詞「:測試」,這個標記留下來還是被替換?基本上,你是否刪除所有標記,或者只是在文字結尾? – Bryan

回答

2

你可以使用正則表達式來修改字符串。

String resultString = subjectString.replaceAll("([a-z]+)[?:!.,;]*", "$1"); 

有沒有「的話」我知道在哪裏'是在年底,它是用來作爲一個標點符號。所以這個正則表達式會爲你工作。

+0

如果字符串包含單個單詞並且目的是要刪除*尾部的*標點字符 - OP沒有澄清,則表達式可以被簡化,但是... – bobbymcr

+0

bobbymcr我打算僅刪除尾部標點符號。在這種情況下如何簡化表達式? – user1044680

+0

這很有效,謝謝。 – user1044680

5

使用接受正則表達式的方法replaceAll(...)

String s = "don't. do' that! "; 
s = s.replaceAll("(\\w+)\\p{Punct}(\\s|$)", "$1$2"); 
System.out.println(s); 
相關問題