我正在尝试创建一个字词过滤器,用户可以在其中替换某些字词。但是,显然有一些我不希望它过滤的东西(例如,除了其他词之外的单词)。
到目前为止,我有这个:
msg = msg.replaceAll("(?i)\\b[^\\w -]*"+original+"[^\\w -]*\\b", replacement);
在大多数情况下,它的效果相对较好。但是,有一个小故障。
当我用“r”代替“m”时,它会替换“我”中的“m” - 这意味着它变成了“我”,这显然是一个错误。
我希望你理解我的意思。帮助
答案 0 :(得分: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);