所以在我的程序中,用户必须注册,其中一个要输入的字段是电话号码。
我想检查他们输入的前3个号码是否有效
if (TextUtils.isEmpty(PhoneNumber) || PhoneNumber != "055, 050, 056, 052") {
PhoneNumber.setError("Please enter a valid phone number")
return;`
}
这是我的代码,但它引发了很多错误,有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
StyleSheet
错了。
您可以创建一个字符串数组并将其存储在那里。
PhoneNumber != "055, 050, 056, 052"
然后检查电话号码是否有效
String okNums = {"055", "050", "056", "052"};
答案 1 :(得分:0)
将您的模式转换为数组并搜索手机是否以任何
开头String d = "055, 050, 056, 052";
String p = "055 66";
String[] pArr = d.split(",");
for (String patt : pArr ) {
System.out.println(patt.trim());
System.out.println(p.indexOf(patt)==0);
}
答案 2 :(得分:0)
//Get the string from the edit text by:
String number = yourEditText.getText().toString();
if(number != null && number.matches("639[0-9]{9}"))
//do what you need to do for valid input
else
//do what you need to do for invalid input
matches()确保整个字符串(完全)与它所采用的正则表达式相同。 639 [0-9] {9}表示字符串必须从639开始,然后紧跟9个数字(0-9)。例如,如果你想匹配“639”后跟7到9个数字,你可以使用:639 [0-9] {7,9}。正则表达式:
答案 3 :(得分:0)
一个简单的解决方案是.startsWith()
if (!PhoneNumber.startsWith("055") || !PhoneNumber.startsWith("050") || !PhoneNumber.startsWith("056") || !PhoneNumber.startsWith("052")) {
// does not match
}
另一种选择是使用正则表达式
if (!PhoneNumber.matches("^(055|050|056|052)\d+$")){
// does not match
}
答案 4 :(得分:0)
你做的最糟糕的事情就是你的比较。当你需要与几个值进行比较时,你不能这样比较。相反,您必须使用类似List#contains
方法的内容来检查您是否PhoneNumber
。
String[] check = {"055", "050", "056", "052" };
if (TextUtils.isEmpty(PhoneNumber) || Arrays.asList(check).contains(PhoneNumber.getText().toString())) {
PhoneNumber.setError("Please enter a valid phone number")
return;
}
答案 5 :(得分:0)
好吧,根据我的理解,这里是一个解决方案,如果电话号码是一个完整的字符串,你可以使用这个提取前3个数字:
String s="052487978";
String ex = s.substring(0,3));//052
创建一个int数组并在其中存储所有有效选项
int[] array = {055, 050, 056, 052};
并将字符串ex转换为int int value = Integer.parseInt(ex);
并检查它是否在包含有效选项的字符串中可用。
boolean contains = IntStream.of(array ).anyMatch(x -> x == value);
如果它是真的,那么它是无效的。