2016-11-02 115 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''''剧院''',则无法工作 –