我正在尝试验证java中的电话号码。在我的国家,电话号码以9或8开头,只有8个号码。我做完了
CA2CT
但是我需要验证数字的第一个数字不是9或8的时候。我不完全确定我应该怎么做。请解释您的代码如何运作,因为我是一名学生,我正在努力学习。
答案 0 :(得分:2)
以防您正在寻找正则表达式解决方案。
您可以使用以下模式keyerror:0
来执行检查。
基本上它的作用是什么;
^(?=(?:[8-9]){1})(?=[0-9]{8}).*
^
(?=(?:[8-9]){1})
(?=[0-9]{8})
.*
<强>输出:强>
有效的电话号码!
答案 1 :(得分:1)
将字符串放在一起的方法可以在String和Character类中找到。
以下是一个可以满足您需求的示例程序:
public class Foo {
public static void main(String[] args) {
// First try null and the empty string
System.out.println(isValidPhoneNumber(null));
System.out.println(isValidPhoneNumber(""));
// Now try an otherwise valid string that doesn't have the right first character
System.out.println(isValidPhoneNumber("01234567"));
// Now try an invalid string
System.out.println(isValidPhoneNumber("9a934581"));
// Finally a valid number
System.out.println(isValidPhoneNumber("94934581"));
}
static boolean isValidPhoneNumber(String phoneNo) {
// First validate that the phone number is not null and has a length of 8
if (null == phoneNo || phoneNo.length() != 8) {
return false;
}
// Next check the first character of the string to make sure it's an 8 or 9
if (phoneNo.charAt(0) != '8' && phoneNo.charAt(0) != '9') {
return false;
}
// Now verify that each character of the string is a digit
for (char c : phoneNo.toCharArray()) {
if (!Character.isDigit(c)) {
// One of the characters is not a digit (e.g. 0-9)
return false;
}
}
// At this point you know it is valid
return true;
}
}
它产生的输出是:
false
false
false
false
true
最终for-each循环可以避免使用带有显式计数器的for循环重新检查第一个字符,但是不检查单个int的性能增益不会超过更干净的代码和更好的可读性对于每个构造。
编辑:另请注意,我已从原始问题中删除了验证错误消息,以便提高可读性,因为OP要求解释代码正在执行的操作。
答案 2 :(得分:0)
您可以查看phoneNo
的第一个字符:
if (phoneNo.charAt(0) != '9' && phoneNo.charAt(0) != '8') {
// the first character is not a 9 or an 8
}
来自Oracle的charAt
文档。
答案 3 :(得分:0)
不是在Integer变量中取电话号码而是将其带入String变量。 然后使用stringVariable.charAt(0)
检查第一个数字是否为9,8并且对于电话号码的长度,使用int len = stringVariable.length();