在我的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();
}
}
}
});
提前致谢。
答案 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))