4

ユーザーが特定の単語を他の単語に置き換えることができる単語フィルターを作成しようとしています。ただし、明らかに、フィルター処理したくないものがいくつかあります (たとえば、他の単語とは別の単語)。

これまでのところ、私はこれを持っています:

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

ほとんどの場合、比較的うまく機能します。ただし、小さな不具合が 1 つあります。

「m」をたとえば「r」に置き換えると、「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 に答える