近期在一個項目中用到修改密碼這個功能,不過對於密碼的輸入,我們不希望使用者輸入漢字或者特殊字元,所以我們需要對使用者進行輸入的輸入框進行過濾,下面是一個對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(); }
希望大家有什麼更好的辦法,可以分享一下,請大家多多指教。