天天看點

Android EditText輸入ascii可見字元

1. 使用xml限制

2. 代碼中使用InputFilter方式

   ascii可見字元範圍是空格到~,即( -~)。

   使用InputFilter重寫filter方法,使用正規表達式"[^ -~]",表示除空格到“~”的字元集。

   然後使用Matcher.find比對,比對到了就傳回空字元串,表示忽略此次輸入;沒比對到傳回null,表示目前輸入滿足條件。

   這裡在說下 public CharSequence filter()方法的傳回值

   return "",表示忽略此次輸入。

   return null,表示目前輸入滿足條件。

   完整的方法如下:

   private static InputFilter pwdFilter = new InputFilter() {

        Pattern pwdPattern = Pattern.compile(

                "[^ -~]",

                Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);

        @Override

        public CharSequence filter(CharSequence source, int start, int end, Spanned dest,

                                   int dstart,

                                   int dend) {

            Matcher pwdMatcher = pwdPattern.matcher(source);

            if (pwdMatcher.find()) {

                return "";

            }

            return null;

        }

    };