Java: Почему мой фильтр непристойности заменяет все последние слова, заканчивающиеся на «а» в моих сеансах чата? - PullRequest
0 голосов
/ 10 марта 2012

Я использую Java, и я создал фильтр непристойности, который работает хорошо, за исключением того, что если у нас есть буква, оканчивающаяся на, она будет заменена.

например.«Я хочу банан» -> «Я хочу банан»

ОДНАКО ... Если вы добавите пунктуацию после «а», она будет отображаться правильно.

например."Хотите банан?"-> «Хочешь банан?»

Вот что я сделал:

public String rInString(String theDisplay) {
    String a = theDisplay;
    String b = word;
    String c = Matcher.quoteReplacement(replacement);
    if(matchWholeWord != null && matchWholeWord){
        b = "([^\\p{Alpha}\\p{Lower}\\p{Space}])" + b + 
            "([^\\p{Alpha}\\p{Lower}\\p{Space}])";
        a = " " + a + " ";
        c = "$1" + c + "$2";
    }
    return message.replaceAll("(?i:" + b + " )", c).trim();
}

public String rInString(String theDisplay, String theB, String replace) {
    String c = Matcher.quoteReplacement(replace);
    String a = theDisplay;
    String b = theB;
    if (matchWholeWord != null && matchWholeWord) {
        b = "([^\\p{Alpha}\\p{Space}])" + b + "([^\\p{Alpha}\\p{Space}])";
        a = " " + a + " ";
        c = "$1" + c + "$2";
    }

    return message.replaceAll("(?i:" + b + ")", c).trim();
}

1 Ответ

0 голосов
/ 29 марта 2012

Проблема заключалась в том, что одна буква (а) была заблокирована, потому что $$ - это конец в выражении RegEx.Это означало, что а считался плохим элементом.Каждый $ должен быть экранирован в операторе SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...