我在Android Studio上创建了一个程序,其中我有一个EditText,用户可以在其中输入以逗号分隔的3个数字,每个数字必须在10到15位之间,代表一个电话号码。 这是验证EditText是否具有最小10和最多15个数字的方法:
private boolean validateNumberField(EditText editText){
if(editText.getText().toString().length()<10 || editText.getText().toString().length()>15){
editText.setError(" The number field should have minimum 10 digits and a maximum of 15");
return false;
}else {
return true;
}
}
问题是:有没有办法验证每个数字是否包含最小10位数和最多15位数? 谢谢。
答案 0 :(得分:2)
当然,使用RegEx可以做到最好。
但是在你的情况下,拆分字符串可能会有所帮助,因为这不是太复杂:
execute
答案 1 :(得分:1)
试试这个:
String[]arr= editText.getText().toString().split(",");
boolean valid=false;
for (String a : arr) {
if(validate(a))
{
valid=true;
}
else
{
valid=false;
break;
}
}
if (valid)
{
// valid number
}
else
{
//not valid number
}
并使用下面的函数:
private boolean validate(String txt){
if(txt.length()<10 || txt.length()>15){
return false;
}
return true;
}
答案 2 :(得分:0)
private boolean validateNumberField(EditText editText){
String entry = editText.getText().toString();
String [] phoneNumbers = entry.split(","); // Seperate string on commas
for(String phone : phoneNumbers){
if( !hasCorrectDigitNumber(phone) ) {
// Toast maybe?
editText.setError(" The number field should have minimum 10 digits and a maximum of 15");
return false;
}
}
return true;
}
private boolean hasCorrectDigitNumber(String phone){
int count = 0;
for(int i = 0; i < phone.length(); i++){
char c = phone.charAt(i);
if(c <= '9' && c >= '0')
count++;
}
return count >= 10 && count <= 15;
}