4

我正在尝试创建一个单词过滤器,用户可以在其中将某些单词替换为其他单词。但是,显然有些东西我不希望它过滤(例如,与其他词分开的词)。

到目前为止,我有这个:

msg = msg.replaceAll("(?i)\\b[^\\w -]*"+original+"[^\\w -]*\\b", replacement);

在大多数情况下,它的效果相对较好。但是,有一个小故障。

当我用“r”替换“m”时,它也会用“I'm”之类的词替换“m”——这意味着它变成了“I'r”,这显然是一个错误。

我希望你明白我的意思。帮助?

4

1 回答 1

1

这样的事情怎么样?

//If "X-Men" counts as one word:
msg = msg.replaceAll("(?i)(?<![\\w'-])"+original+"(?![\\w'-])", replacement);
//If "X-Men" counts as two words:
msg = msg.replaceAll("(?i)(?<![\\w'])"+original+"(?![\\w'])", replacement);
于 2013-06-07T15:20:28.883 回答