美文网首页
EditText只能输入中文

EditText只能输入中文

作者: Orz013 | 来源:发表于2017-03-15 17:46 被阅读0次

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

    只能输入中文的正则 使用方式

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

    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只能输入中文

          本文链接:https://www.haomeiwen.com/subject/ocqrnttx.html