0

ユーザー入力の冒とく的な表現を検出するために、Java で基本的な冒とく的な表現フィルターをまとめています。私は、コンピューターだけでは解決できない可能性が高いとわかっているシナリオをすべて処理しようとしているわけではありません。ただし、コンピューターで処理するのに適したいくつかの基本的なシナリオを処理したいと考えています。この特定のケースでは、文字間にスペースを使用してフィルターを破ろうとしているユーザーを検出しようとしています。例: 「こんにちは、私はここで asmurf という単語を使用しています」。(ここではスマーフが「悪い」言葉です)。

私の現在の実装では、入力テキストをチェックする単語のリストを保持しています。

public boolean containsBadWords (String text) {

    for (String word : badWords) {
        if (text.matches (".*\\b" + word  +"\\b.*")) {
            return (true);
        }
    }

    return (false);
}

しかし、これでは、上記で説明した文字間隔の問題は処理されません。

基本的なテキスト マッチング アルゴリズムを使用して処理できるように、Java を使用してこれらの単語を折りたたむ方法を知っている人はいますか?

4

1 に答える 1

1

禁止された単語のリストを準備し、単語を調べ、単語を正規表現に変換します。例: "s murf" -> " s *m *u *r *f * "

String regex = " " + word.replaceAll("(.)", "$1 *") + " ";

テキストでそれを見つけようとします

boolean found = Pattern.compile(regex).matcher(text).find();
于 2013-07-27T03:36:41.687 に答える