查看字符串是否包含所有数字的方法

时间:2016-11-12 08:30:13

标签: java string search char

我需要使用我编写的isDigit来完成方法allDigits 当传递有效的String时,如果String的所有字符都是数字,则返回true, 否则就是假的。

到目前为止,我有:

public static boolean isDigit (char ch){
    if (ch >= '0' && ch <= '9')
        return true;
    return false;
}

public static boolean allDigits(String s){
    for (int i =0; i<s.length(); i++)
        if(isDigit(s.charAt(i)) == true)
            return true;
    return false;
}

但如果只说

,则返回true
public static void main(String[] args) {
    String s = "abc123";
    System.out.println(allDigits(s));
}

OUTPUT:true

但是应该返回false

另外:我的代码有效吗?我觉得这是一种更简单的方法。 感谢任何帮助

2 个答案:

答案 0 :(得分:1)

你应该检查每个字符,如果不是数字,则返回false,否则返回true:

public static boolean allDigits(String s) {
    for (int i=0; i < s.length(); i++) {
        if (!isDigit(s.charAt(i)))
            return false;
    }

    return true;
}

但是处理这个问题的方法更简洁,我要做的就是使用正则表达式:

public static boolean allDigits(String s) {
    return s.replaceAll("\\d", "").equals("");
}

请注意,上述方法会将空字符串视为包含所有数字字符。如果您希望空字符串失败,则可以很容易地将此​​逻辑添加为边缘情况。

答案 1 :(得分:0)

我总是会寻找现有的解决方案。如何使用 https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringUtils.html#isNumeric(java.lang.CharSequence)

我对这些关于效率和正确性的开源解决方案充满信心。