所以我无法想象我的生活。我正在尝试编写一个程序,提示用户输入电话号码。这将作为字符串输入,并在程序中稍后转换为整数数组。但是,我现在遇到的情况是验证用户输入的字符串!包含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);
}
答案 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