EditText只能输入中文

最近在为一个项目做维护,遇到了一个有强迫症的测试,给她写了个大写服字,结果为了这个bug特意写了一个类来处理,言归正传吧,看看代码是怎样处理的


EditText只能输入中文_第1张图片
只能输入中文的正则


使用方式

最后贴上整个类的代码给大家

importandroid.text.Editable;

importandroid.text.TextWatcher;

importandroid.widget.EditText;

/**

*对EditText输入规则进行校验,规则可以自己定义

*/

publicclassLimitInputTextWatcherimplementsTextWatcher {

/**

* et

*/

privateEditText et =null;

/**

*筛选条件

*/

privateString regex;

/**

*默认的筛选条件(正则:只能输入中文)

*/

//private String DEFAULT_REGEX = "[^\u4E00-\u9FA5]";

/**

*默认的筛选条件(正则:只能输入中文和字母)

*/

privateString DEFAULT_REGEX ="[^A-Z|a-z|\u4e00-\u9fa5]";

/**

*构造方法

*

* @param et

*/

publicLimitInputTextWatcher(EditText et) {

this.et = et;

this.regex = DEFAULT_REGEX;

}

/**

*构造方法

*

* @param etet

* @param regex筛选条件

*/

publicLimitInputTextWatcher(EditText et, String regex) {

this.et = et;

this.regex = regex;

}

@Override

publicvoidbeforeTextChanged(CharSequence charSequence,inti,inti1,inti2) {

}

@Override

publicvoidonTextChanged(CharSequence charSequence,inti,inti1,inti2) {

}

@Override

publicvoidafterTextChanged(Editable editable) {

String str = editable.toString();

String inputStr = clearLimitStr(regex, str);

et.removeTextChangedListener(this);

// et.setText方法可能会引起键盘变化,所以用editable.replace来显示内容

editable.replace(0, editable.length(), inputStr.trim());

et.addTextChangedListener(this);

}

/**

*清除不符合条件的内容

*

* @param regex

* @return

*/

privateString clearLimitStr(String regex, String str) {

returnstr.replaceAll(regex,"");

}

}

你可能感兴趣的:(EditText只能输入中文)