Java 检测字符串不';不包括数字

Java 检测字符串不';不包括数字,java,Java,我需要检测的用户号码不应该包括字符 我知道这个方法: public boolean haveDigit(String str) { for (int i = 0; i < str.length(); i++) { if (Character.isDigit(str.charAt(i))) return true; } return false; } public boolean haveDigit(字符串str){ 对于(int i=0;i

我需要检测的用户号码不应该包括字符

我知道这个方法:

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

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

关于
Integer.parseInt(String)
看看是否存在整数

public boolean isNumeric(String num)
{
    try
    {
        Integer.parseInt(num);
        return true;
    }
    catch(NumberFormatException e)
    {
        return false;
    }
}
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;
 }

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

// 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+");
}
但是根据您的文本,您需要测试字符串是否只包含一个数字。为此,您可以使用:

// 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+");
}
使用类和正则表达式。 此方法与您的方法相同

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

下一个方法检查您的请求

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
怎么样(OP编辑后的更新版本)


您的内容和代码不匹配。您可以使用正则表达式。在内容中,您写道str不应包含字符。在代码中,您正在测试它是否包含至少一个数字。@RohitJain是的,我更正了它,谢谢!事实上,你的标题、内容和代码都在说3件不同的事情。请说明您真正想要的是什么。我想您需要字符串的开头和结尾here@Cruncher
matches
仅当整个字符串与传递的正则表达式匹配时才返回true,因此
^
$
在这里是多余的(如果这是您的意思)。如果
num
大于
int
,该怎么办,甚至是长的
biginger
可能是这里更好的选择。