Java布尔问题

时间:2011-05-21 14:15:54

标签: java boolean

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,或者有任何符号不应该是我的名字= BAM,禁止!

但是即使我认为我的播放器名称就像Chaos或者测试一样,它也会被这段代码自动化。 idk如果namepattern Pattern阻止字符,我只是阻止像"!#&%¤/&%(/)(/(=)$@£$@£{€@£这样的符号... 我做错了什么:(?

1 个答案:

答案 0 :(得分:3)

我认为你的意思是(!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所以我删除了它们:)