【发布时间】:2018-04-04 11:31:24
【问题描述】:
我希望用户只在前 5 个字符中键入字母,而接下来的字符只能是数字。
我已阅读此链接的答案:Validation allow only number and characters in edit text in android
但是,当我尝试做我想做的事情时,我收到错误消息:
java.lang.StringIndexOutOfBoundsException: 长度=1;索引=1 在 java.lang.String.charAt(Native Method)
我试图做我想做的代码。
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start,
int end, Spanned dest, int dstart, int dend) {
for (int i = start;i < etLettersAndNumbers.getText().length();i++) {
if (etLettersAndNumbers.getText().length() < 4) {
if (!Character.isLetter(source.charAt(i))) {
return "";
}
}
if (etLettersAndNumbers.getText().length() >= 4) {
if (!Character.isDigit(source.charAt(i))) {
return "";
}
}
}
return null;
}
};
etLettersAndNumbers.setFilters(new InputFilter[] {filter});
我正在使用动态 EditText。
【问题讨论】:
-
试试这个
[a-zA-Z]{5}\d正则表达式 -
对不起,我把它放在哪里?
-
您所说的“仅在前 5 个字符中输入字母”和“下一个字符只能是数字”是什么意思?
-
@Rabee 例如,ABCDE123456789,
-
您当前的循环终止是在
etLettersAndNumbers.getText().length()基础上,而我想它应该在您收到的“结束”参数上。
标签: android