近期在一個項目中用到修改密碼這個功能,不過對於密碼的輸入,我們不希望使用者輸入漢字或者特殊字元,所以我們需要對使用者進行輸入的輸入框進行過濾,下面是一個對EditText進行過濾的小程式碼片段:
1.首先給Edittext 添加一個TextWatcher,當然這個TextWatcher我們是要自己寫的,核心功能也在這個類中
[java]
mOldPwdET.addTextChangedListener(new SearchWather(mOldPwdET ));
2.下面就是這個自訂的TextWatcher
[java]
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);
//設定新的游標所在位置 www.2cto.com
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();
}
希望大家有什麼更好的辦法,可以分享一下,請大家多多指教。
作者 jamin0107