检查字符串是否包含字母

时间:2014-11-08 04:57:48

标签: java string input contains digits

所以我无法想象我的生活。我正在尝试编写一个程序,提示用户输入电话号码。这将作为字符串输入,并在程序中稍后转换为整数数组。但是,我现在遇到的情况是验证用户输入的字符串!包含2-9的数字。我已经尝试过.contains方法以及.match方法,但是使用这些方法总是会给我带来错误的结果。如果有人能够解释如何解决这个问题我会非常感激。谢谢你提前。

这是我到目前为止所做的:

Scanner user_input = new Scanner(System.in);
String number = user_input.nextLine();

if(number.contains("[2-9]+")) {
    for(int count = 0; count < number.length(); count++) {
        digits[count] = number.charAt(count)-'0';
    }

    System.out.println(Arrays.toString(digits));

    //printWord(digits, out, length, 0);
} else {
    System.out.println("Invalid phone number!");
    System.exit(0);
}

5 个答案:

答案 0 :(得分:0)

您可以创建一个类似onlyDigits(String)的方法,并使用Pattern和您提供的正则表达式

private static Pattern pattern = Pattern.compile("[2-9]+");

public static boolean onlyDigits(String in) {
    Matcher m = pattern.matcher(in);
    return m.matches();
}

然后您可以将其称为

public static void main(String[] args) {
    System.out.println(onlyDigits("123"));
    System.out.println(onlyDigits("123a"));
    System.out.println(onlyDigits("234"));
}

答案 1 :(得分:0)

试试这个:

String regex = "[2-9]+";
number.matches(regex);

答案 2 :(得分:0)

您可以检查以确保给定的输入在字符范围内,例如:

Scanner user_input = new Scanner(System.in);
String number = user_input.nextLine();

for(int i=0; i<number.length;i++){
   if(number.charAt(i) >= '2' && number.charAt(i) <= '9') {
        digits[i] = number.charAt(i)-'0';
    }
} else {
    System.out.println("Invalid phone number!");
    System.exit(0);
   }
}
//printWord(digits, out, length, 0);
System.out.println(Arrays.toString(digits));

答案 3 :(得分:0)

您可以使用Pattern类的正则表达式,该类具有Pattern.matches(String regex, CharSequence input)方法。你可以做点什么

public static void main(String[] args) {
    System.out.println("Enter phone number");
    Scanner input = new Scanner(System.in);
    String phoneNumber = input.nextLine();                            
    System.out.println(Pattern.matches("[2-9]+", phoneNumber));
}

您可以选择符合您需求的正则表达式。例如,

    上面的
  • [2-9]+匹配合法字符集2,3,...,9中至少一个字符的序列
  • [2-9]*将匹配该集合中出现的0个或多个字符
  • [2-9]{n}会匹配n出现

答案 4 :(得分:0)

如果所有字符都是数字,

number.matches("\\d+");将返回true;空字符串将返回false