近期在一个项目中用到修改密码这个功能,不过对于密码的输入,我们不希望用户输入汉字或者特殊字符,所以我们需要对用户进行输入的输入框进行过滤,下面是一个对EditText进行过滤的小代码片段:
1.首先给Edittext 添加一个TextWatcher,当然这个TextWatcher我们是要自己写的,核心功能也在这个类中
mOldPwdET.addTextChangedListener(new SearchWather(mOldPwdET ));
2.下面就是这个自定义的TextWatcher
class SearchWather implements TextWatcher{ //监听改变的文本框 private EditText editText; /** * 构造函数 */ public SearchWather(EditText editText){ this.editText = editText; } @Override public void onTextChanged(CharSequence ss, int start, int before, int count) { String editable = editText.getText().toString(); String str = stringFilter(editable.toString()); if(!editable.equals(str)){ editText.setText(str); //设置新的光标所在位置 editText.setSelection(str.length()); } } @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count,int after) { } } public static String stringFilter(String str)throws PatternSyntaxException{ // 只允许字母和数字 String regEx = "[^a-zA-Z0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll("").trim(); }
希望大家有什么更好的办法,可以分享一下,请大家多多指教。