我试图限制哪些信息可以输入到edittext字段中。我希望编辑文本只有两个字母,后跟三个数字,例如:CM066。我尝试过使用:
InputFilter myFilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isLetter(source.charAt(i))) {
return "";
}
if (i == start) {
return source.toUpperCase();
}
}
return source;
}
};
edit.setFilters(new InputFilter[]{myFilter});
但是我认为这只允许其中一个。有没有办法做到这一点?或者将这些作为两个编辑文本并在XML中设置输入类型会更容易吗?谢谢!
答案 0 :(得分:0)
解决:
private void codeFilter()
{
codeInput.setFilters(new InputFilter[]
{
new InputFilter.LengthFilter(5)
{
public CharSequence filter(CharSequence src, int start,
int end, Spanned dst, int dstart, int dend)
{
if (src.toString().matches("[A-Z]+[A-Z]+[0-9]+[0-9]+[0-9]"))
{
return src;
}
return "";
}
}
});
}
答案 1 :(得分:0)
您可以使用正则表达式进行此类检查。对于您只想允许两个字母的情况,那么三位正则表达式是
^[A-Z]{2}[0-9]{3}$
如果您只允许使用上限字母,那么它应该是
Pattern p = Pattern.compile("^[A-Z]{2}[0-9]{3}$");
Matcher m = p.matcher("CM006");
if(m.matches())
{
//do what you want to do
}
else
{
//do if they dont match
}
您可以像下面那样使用它
{{1}}
如果你想了解更多关于android中的正则表达式和模式
http://developer.android.com/reference/java/util/regex/Pattern.html