2011-05-16 57 views
1

我是新手android &我在为一个项目编写应用程序。在Android中验证edittext

我需要检查用户是否在edittext中输入了7个数字后跟一个字母。 例如:0000000x

我应该怎么做? TIA! :)

+0

您可以尝试使用正则表达式。但是由于我还没有研究它,所以我无法在这里给你提供样品。试着谷歌它。您可以轻松找到解决方案。 – 2011-05-16 04:25:58

+0

@AndroSelva - “你可以尝试使用正则表达式” - 但是你会遇到两个问题;) – katzenhut 2015-05-19 10:19:44

回答

6

可能最好的方法是使用传递到EditText的addTextChangedListener()方法的TextWatcher。下面是一个例子使用:

editText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable e) { 
    String textFromEditView = e.toString(); 
    validateText(textFromEditView); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    //nothing needed here... 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    //nothing needed here... 
    } 
}); 

我将离开validateText(String)方法作为练习读者的实施,但我想它应该是很容易。我要么使用:

  1. 一个简单的正则表达式。
  2. 或者由于这种情况很容易,检查字符串的长度是8,并检查每个字符。有一个简单的实用程序类来检查字符的特征。 Character.isDigit(char)Character.isLetter(char)
0

OnKeyListener侦听视图中的每个关键笔划。你可以使用它来检查用户是否输入了他所设想的内容。

例如:如果没有输入炭为7,则

检查,如果它遵循REQD表达格式。

0

有一个名为格局的Android在类你可以给正则表达式匹配您的要求试试这个follwoing代码,我认为它可能工作

模式p = Pattern.compile(“{7}”); Matcher m = p.matcher(String.valueOf(edittext));

这将是真正的只有7个字符是否有在文本框中,然后你可以使用一些贪利像“Character.isDigit(焦炭)和Character.isLetter(炭)”