检查字符串是否只包含数字

时间:2018-03-20 16:54:17

标签: java string numbers

我想检查一个字符串是否只包含3个数字(000-999)所以我试过了:

if (id.length() != 3 && !id.matches("[0-9]+")) {
            Terminal.printError("ID needs 3 Numbers!");
            return;
}

2 个答案:

答案 0 :(得分:8)

在这些情况下,您必须使用OR而不是AND,而不仅仅是true

if (id.length() != 3 || !id.matches("[0-9]+")) {
     ...
}

或更简单地使输入字符串的大小和数字匹配:

if (!id.matches("\\d{3}")) {
    ...
}

请注意,如果您颠倒了整个布尔表达式的结果并且测试了名义上的情况,那么使用&&的方式可能是有效的(虽然因为正则表达式未被利用而是多余的)。 但它会产生一个不太可读的代码:

if (!(id.length() == 3 && id.matches("[0-9]+") )) {
    ...
}

使用中间局部变量,它会更具可读性,你可能不会犯这个错误:

boolean isValid = id.length() == 3 && id.matches("[0-9]+")
if (!isValid) {
    ...
}

答案 1 :(得分:2)

使用此:

if (!id.matches("[0-9]{3}")) {
    Terminal.printError("ID needs 3 Numbers!");
    return;
}

使用{3}部分仅匹配3次出现的数字,但在您的代码中,+表示多个