如果值包含3个以逗号分隔的字符串,如何检查EditText中的值?

时间:2016-06-13 15:55:23

标签: java android xml

我在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位数? 谢谢。

3 个答案:

答案 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;
}