2016-11-02 112 views
1

我試圖用空白替換沒有用字母包圍的所有撇號。對於it's等情況,撇號不會被替換。試圖從Java中的字符串中刪除撇號

我已經試過這樣:

str.replaceAll("[^a-zA-Z](')", " ") 
    .replaceAll("(')[^a-zA-Z]", " "); 

然而,仍然有一些情況下是不能工作了,我也認爲應該有一個更優雅的方式來做到這一點。有人可以幫我嗎?

+1

不幸的是,無論你做什麼,你都會刪除一些你不應該去掉的撇號。例如像「ol」或「horses」這樣的詞。 – biziclop

+0

@biziclop你能更具體嗎?如果在「ol」和「horses」後面沒有字母,這些撇號應該被消除。 –

+2

@WangNick看看這些[撇號規則](http://www.grammarbook.com/punctuation/apostro.asp)。注意字尾有多少正確的撇號使用。 – imtheman

回答

1

正則表達式:^'+|'+(?!\S)(國旗:G,M)

匹配在輸入開始一個撇號。匹配所有的撇號後面沒有非空白字符。如果可能,+允許重複以前的令牌(')。

如果你有一些撇號的例子被這個替代,但不應該,只是留下他們的評論,我會看看我是否可以修改。

+0

如果您嘗試過'a''''劇院''',則無法工作 –