Java boolean 问题

标签 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 或 test,它也会被此代码自动禁止。 idk 如果 namepattern 模式也阻止字符,我只是阻止像 "!#&%¤/&%(/)(/(=)$@£$@£{€@£ 这样的符号额... 我做错了什么:(?

最佳答案

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

关于Java boolean 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6082283/

相关文章:

c# - 一种让 boolean 值代表 1 和 -1 的优雅方式

c# - "Use of unassigned local variable"错误的原因是什么?

swift - 如何使用 Parse 子类和 User 之间的关系 - Swift

c - 为什么 bool isFull 不更新为 false?

java - 我们什么时候应该将 String 更改为 Stringbuilder?

java - 具有缩小概念的三元运算符

java - 首次保存后出现 TransientObjectException 错误

java - 如何在 itext 中设置自定义颜色?

python - numpy 2d boolean 数组计数连续真实大小

java - 谷歌播放完整性 API : a Nightmare