检测字符串不包含数字

时间:2013-09-30 18:43:52

标签: java

我需要检测用户号码不应该包含字符。

我知道这个方法:

    public boolean haveDigit(String str) {
    for (int i = 0; i < str.length(); i++) {
        if (Character.isDigit(str.charAt(i))) return true;
    }
    return false;
}

还有其他更好更简单的解决方案吗?

5 个答案:

答案 0 :(得分:2)

你可以在这里使用正则表达式。目前,您的代码正在测试字符串是否包含至少一个数字。如果您需要,可以使用:

// Modification of your code. Test string contains at least 1 digit
public boolean haveDigit(String str) {
    return !str.replaceAll("\\D+", "").isEmpty();
}

但是根据你的文字,你想测试字符串是否只包含一个数字。为此你可以使用:

// Test is string only contains digit and no other character
public boolean isDigit(String str) {
    return str.matches("\\d+");
}

答案 1 :(得分:1)

public boolean isNumeric(String num)
{
    try
    {
        Integer.parseInt(num);
        return true;
    }
    catch(NumberFormatException e)
    {
        return false;
    }
}

答案 2 :(得分:1)

使用Pattern类和正则表达式。 此方法等于您的方法。

public boolean haveDigit(String str) 
{
   Pattern p = Pattern.compile(".*[0-9].*");
   Matcher m = p.matcher(str);
   return m.matches();
}  

测试

haveDigit("d9h");    //true
haveDigit("d9agh6"); //true
haveDigit("hello");  //false

下一个方法检查你的要求

public boolean isNumeric(String str) 
{
   Pattern p = Pattern.compile("[0-9]+");
   Matcher m = p.matcher(str);
   return m.matches();
}  

测试

isNumeric("r5t"); // false
isNumeric("100"); // true
isNumeric("0.5"); // false

答案 3 :(得分:1)

如何(OP编辑后的更新版本)

if (str.matches("\\D+")){
   // str contains only non-digits characters 
   // and its length is one or more.
   // If user wants also to accepts empty strings instead '+' should use '*'
}else{
   // str contains digit (or is empty if we used '+')
}

答案 4 :(得分:0)

Integer.parseInt(String)怎么看整数是否存在。

public boolean checkNumeric(String str) {
    try { 
         Integer.parseInt(str);  // parse to check if the integer is an integer
         return true;
     } catch (NumberFormatException ne) {
         return false;
 }