使EditText仅接受alpha作为第一个字符

时间:2013-03-05 07:19:29

标签: android textwatcher

在我的EditText中,我想将第一个字符输入为alpha,剩下的就是其他内容。我在TextWatcher的帮助下完成了这项任务。但现在我的问题是如果我输入错误(如数字,特殊字符)作为我的第一个字符,那么我的EditText不应该接受剩余的字符。如果我更正了我的第一个字符,那么只有我的EditText才能接受。他们有可能实现这个朋友吗?如果是,那么请指导我的朋友。

我的textWatcher代码是

edittext.addTextChangedListener(new TextWatcher() {
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {

    }

    public void afterTextChanged(Editable s) {          
        if (s.length() > 0) {
            String str = edittext.getText().toString();
            char t = str.charAt(0);
            if (!Character.isLetter(t)) {
                Toast.makeText(getApplicationContext(),
                        "please enter your first charecter as alpha",
                        Toast.LENGTH_LONG).show();
            }
        }
    }
});

提前致谢。

3 个答案:

答案 0 :(得分:3)

尝试以下代码

editText.addTextChangedListener(new TextWatcher() {

        public void onTextChanged(CharSequence s, int start,
                int before, int count) {

        }

        public void beforeTextChanged(CharSequence s, int start,
                int count, int after) {
        }

        public void afterTextChanged(Editable s) {

            Character cr = s.toString().charAt(0);
     if(Character.isLetter(cr))
      {
        // do stuff here  
      }
             else
             {
                // do stuff here
             }


        }
    });

答案 1 :(得分:0)

editText.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start,
                    int before, int count) {
                            //check if 's' starts with an alphabet
                            if(Character.isLetter(s.toString().charAt(0)))
                            {
                                  //success
                            } else {
                                  //fail
                            }
            }

            public void beforeTextChanged(CharSequence s, int start,
                    int count, int after) {
            }

            public void afterTextChanged(Editable s) {
            }
        });

答案 2 :(得分:0)

您可以使用方法chatAt(int index)获取指定位置的字符值,在您的情况下为0。

然后你应该使用isLetter()来验证所提取的字符是否为字母。

例如。 isLetter(chatAt(0))