如何知道String是否只包含0到9而没有其他字符

0 java

我是新来的,我的代码有问题.

我有一个5个字符的字符串,这就是我想出来的

public static boolean isNumber(String strng) {
    return (strng.contains("[0-9]+"));
}

public static void main(String[] args) {
     String strng; 
     Scanner strong = new Scanner(System.in);


while (isNumber(dato) == true && dato.length() != 5){
        System.out.println("Isnt a correct id number");
        strng = strong.nextLine();

    }
Run Code Online (Sandbox Code Playgroud)

但是有了这个我可以引入一个点或一个分号,我试过[a-zA-Z]+并且boolean在假但是不工作我只搜索从0到9的数字.

有什么线索吗?

Kon*_*kov 7

strng.contains("[0-9]+") 应该是 strng.matches("[0-9]+")

这将测试您strng有一个或多个数字.

如果您希望您的字符串恰好匹配五位数,那么您将必须使用该"[0-9]{5}"模式.

  • 在将正则表达式传递给`matches`之前*明确*调用`Pattern.compile`是一个很好的做法. (3认同)

Arm*_*and 5

您可以使用正则表达式检查内容长度:

strng.matches("[0-9]{5}")
Run Code Online (Sandbox Code Playgroud)

这将返回true正好5个字符的字符串,仅包含数字字符.