2012-05-01 6 views
0

У меня есть поле editText, для которого я хочу проверить, что он соответствует определенным критериям, в основном он должен содержать 2 строки и 3 строки, как я могу проверить это перед добавлением элемента.Android CheckText check help

EditText.getText().toString(); 

я мог добавить проверку, что делает comething как этот

public boolean checkString(String StringPassed) { 

    String s = StringPassed; 
if(s.length == 5){ 
    boolean hasString = false; 
    boolean hasInt = false; 
    String letters = s.substring(0, 2); 
    Pattern p = Pattern.compile("[a-zA-Z]"); 
    Matcher m = p.matcher(letters); 
    if (m.matches()) { 
    hasString = true; 
    } 
    String numbers=s.substring(2,5); 
    try { 
    int num = Integer.parseInt(numbers); 
    String n = num + ""; 
    if (num > 0 && n.length() == 3) 
     hasInt = true; 
    } catch (Exception e) { 
    } 
    if (hasInt && hasString) { 
    return true; 
    } 
}else{ 
    return false; 
} 
return false; 
} 

Я тогда метод, который будет сказать

public void addString() { 

String StringPassed = EditTextName.getString().toString(); 
checkString(String StringPassed); 

if (StringPassed() == false) { 
Display Toast; 
} 
else { 
     add; 
    } 
} 

ответ

1
String s = edittext.gettext(); 
    if(s.length == 5){ 
     boolean hasString = false; 
     boolean hasInt = false; 
     String letters = s.substring(0, 2); 
     Pattern p = Pattern.compile("^[a-zA-Z]+$"); 
     Matcher m = p.matcher(letters); 
     if (m.matches()) { 
     hasString = true; 
     } 
     String numbers=s.substring(2,5); 
     try { 
     int num = Integer.parseInt(numbers); 
     String n = num + ""; 
     if (num > 0 && n.length() == 3) 
      hasInt = true; 
     } catch (Exception e) { 
     } 
     if (hasInt && hasString) { 
     //success 
     } 
    }else{ 
     // incorrect string 
    } 

Также вы можете добавить TextWatcher на вашем edittext слушать для изменения ввода текста и вызвать ваш метод автоматически

+0

много примеров здесь не уверен, какой из них использовать, я только хочу проверить, является ли string.length = 5, иначе он будет некорректным в любом случае –

+0

я изменил свой ответ для вас. – androidu

+0

Спасибо за помощь, но делает это разрешить 1 int или 3 int или я читаю его неправильно? –

0

Я не знаю, есть ли встроенный решения для этого, но вы можете прокручивать строку и делать регулярное выражение, которое проверяет заданный символ как целое число?

Может быть что-то вроде:

Boolean isInteger = Pattern.matches("\d", text.toString()); ? 
+0

, чтобы я мог просто поместить в ("[AZ, AZ]", "[AZ, AZ]", "\ D", "\ D", "\ D", text.toString()); –

+0

Да. Должно сработать. –

0

Мы можем реализовать

edittext.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v , int keyCode , KeyEvent event) { 

      // TODO Auto-generated method stub 
      if (keyCode == // Test whether a Number or Alphabet) { 

       // Increase the tag here 
      } 

      return false; 
     } 
    }); 

Но я думаю, что должен быть какой-то неявной функции для этого я до сих пор в поисках этого.

0

Вы можете использовать Regular Expression. This - хороший пример использования регулярного выражения для проверки того, что строка находится в определенном формате. Ниже приведен код от this question, который работает, чтобы проверить, что строка [a-z] [a-z] [0-9] [0-9] [0,9].

package com.ruralogic.regex; 

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class RegexActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String regex ="[a-z][a-z][0-9][0-9][0-9]"; 
     TextView text1 = (TextView)findViewById(R.id.text1); 
     TextView text2 = (TextView)findViewById(R.id.text2); 
     if(IsMatch("123ab",regex)){ 
      text1.setText("true"); 
     }else{ 
      text1.setText("false"); 
     } 
     if(IsMatch("ab123",regex)){ 
      text2.setText("true"); 
     }else{ 
      text2.setText("false"); 
     } 
    } 

    private static boolean IsMatch(String s, String pattern) { 
     try { 
      Pattern patt = Pattern.compile(pattern); 
      Matcher matcher = patt.matcher(s); 
      return matcher.matches(); 
     } catch (RuntimeException e) { 
      return false; 
     } 
    } 
}