首页 > 解决方案 > 在edittext android中限制来自google-indic键盘的“pi”符号

问题描述

我需要限制 android edittext 只允许字母数字字符以及以下字符:空格、'.'、'_'和'-'。

我为此使用了以下代码段:

    filters[1] = new InputFilter() {
        public CharSequence filter(CharSequence source, int start,
                                   int end, Spanned dest, int dstart, int dend) {

            if (source instanceof SpannableStringBuilder) {
                SpannableStringBuilder sourceAsSpannableBuilder = (SpannableStringBuilder) source;
                for (int i = end - 1; i >= start; i--) {
                    char currentChar = source.charAt(i);
                    String strCurrentChar = String.valueOf(currentChar);
                    if (!Character.isLetterOrDigit(currentChar)
                            && !".".equals(strCurrentChar)
                            && !"_".equals(strCurrentChar)
                            && !" ".equals(strCurrentChar)) {

                        sourceAsSpannableBuilder.delete(i, i + 1);
                    }
                }
                return source;
            } else {
                StringBuilder filteredStringBuilder = new StringBuilder();
                for (int i = start; i < end; i++) {
                    char currentChar = source.charAt(i);
                    String strCurrentChar = String.valueOf(currentChar);
                    if (Character.isLetterOrDigit(currentChar)
                            || ".".equals(strCurrentChar)
                            || "_".equals(strCurrentChar)
                            || " ".equals(strCurrentChar)) {
                        filteredStringBuilder.append(currentChar);
                    }
                }
                return filteredStringBuilder.toString();
            }

        }
    };

它可以正常工作,限制除 google-indic 键盘中的数学 'pi' 符号之外的所有其他字符。我怎样才能限制它,以便完全满足要求?

标签: androidandroid-edittextkeyboardspecial-charactersrestriction

解决方案


推荐阅读