检查String是否包含Java中的数字值

Gan*_*thy 45 java

如何编写一个方法来查找给定字符串是否包含数字?如果字符串包含数字,则该方法应返回true,否则返回false.

She*_*hef 83

if(str.matches(".*\\d.*")){
   // contains a number
} else{
   // does not contain a number
}
Run Code Online (Sandbox Code Playgroud)

以前建议的解决方案,但不起作用,但由于@ Eng.Fouad的请求/建议而退回.

不工作建议的解决方案

String strWithNumber = "This string has a 1 number";
String strWithoutNumber = "This string does not have a number";

System.out.println(strWithNumber.contains("\d"));
System.out.println(strWithoutNumber.contains("\d"));
Run Code Online (Sandbox Code Playgroud)

工作方案

String strWithNumber = "This string has a 1 number";
if(strWithNumber.matches(".*\\d.*")){
    System.out.println("'"+strWithNumber+"' contains digit");
} else{
    System.out.println("'"+strWithNumber+"' does not contain a digit");
}

String strWithoutNumber = "This string does not have a number";
if(strWithoutNumber.matches(".*\\d.*")){
    System.out.println("'"+strWithoutNumber+"' contains digit");
} else{
    System.out.println("'"+strWithoutNumber+"' does not contain a digit");
}
Run Code Online (Sandbox Code Playgroud)

产量

'This string has a 1 number' contains digit
'This string does not have a number' does not contain a digit
Run Code Online (Sandbox Code Playgroud)


mre*_*mre 30

使用循环 -

public static boolean containsDigit(final String aString)
{
    if (aString != null && !aString.isEmpty())
    {
        for (char c : aString.toCharArray())
        {
            if (Character.isDigit(c))
            {
                return true;
            }
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

使用流 -

public static boolean containsDigit(final String aString)
{
    return aString != null && !aString.isEmpty() &&
            aString.chars().anyMatch(Character::isDigit);
}
Run Code Online (Sandbox Code Playgroud)

  • 我的赌注是,这种方法会更快,因为它立即进入工作岗位.我不知道模式是如何匹配的,如果没有强制给定的字符串,就不会想到进行匹配.所以我会说这可能会更快,因为它更像_direct_.运行@ kaj的解决方案,有趣的东西:D (2认同)

ale*_*oco 5

谢夫的答案不适合我.看起来他正在使用RegEx String.contains().如果你想使用RegEx,请使用:

String strWithNumber = "This string has a 1 number";
String strWithoutNumber = "This string has a number";

System.out.println(strWithNumber.matches(".*\\d.*"));
System.out.println(strWithoutNumber.matches(".*\\d.*"));
Run Code Online (Sandbox Code Playgroud)


tal*_*las 3

您可以使用正则表达式来查明字符串是否包含数字。看看matches()方法吧。