Булева проблема Java - PullRequest
1 голос
/ 21 мая 2011
private static final Pattern namePattern = 
    Pattern.compile("[a-zA-Z0-9_-]{3,12}");

if (player.getName().length() < 3 || 
        player.getName().length() > 12 || 
        namePattern.matcher(player.getName()).matches()) {
    player.ban("[Autoban] Character-name PE", true);
    return;
}

Код вроде бы очевиден, я надеюсь

Если имя игрока длиннее 12 или короче 3, или есть какие-либо символы, которые не должны быть, например, name = BAM, ban!

, но даже если бы мое имя игрока походило на Хаос или тест, оно автоматически блокируется этим кодом.idk, если шаблон имени также блокирует символы, я просто блокирую символы вроде "!#&%¤/&%(/)(/(=)$@£$@£{€@£ да ... Что я делаю не так: (?

1 Ответ

3 голосов
/ 21 мая 2011

Я думаю, вы имели в виду (!namePattern.matcher(player.getName()).matches()).

Кроме того, вы могли бы использовать только совпадение с регулярным выражением: [a-zA-Z0-9_-]{3,12}, поскольку оно проверяет длину.

Редактировать:

Вы можете использовать такую ​​функцию

public void banIfNeeded(Player player)
{
    Pattern namePattern = Pattern.compile("[a-zA-Z0-9_-]{3,12}");
    if(!namePattern.matcher(player.getName()).matches()) {
        System.out.print("Banned"); 
        // Ban somehow
    }
}

Как прокомментировал @bkail (спасибо!), Нет необходимости в ^ и \z, поэтому я удалил их :)

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