android - EditText中的多种语言,不带特殊字符

标签 android sqlite android-edittext special-characters

我有一个EditText,因为我将这个String存储在SQLlite数据库中,所以我不想包含任何特殊字符。现在我使用:

<item name="android:digits">abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789</item>


这适用于英语。但是,当我将键盘切换为其他语言(日语,俄语,北印度语等)时,我无法输入任何内容。什么是正确的方法?

或者:

我正在使用ContentProvider访问我的SQLite数据库。所以我有读写数据库的方法

context.getContentResolver().insert(uri, values);
context.getContentResolver().delete(uri, values);
context.getContentResolver().query(uri, values); //for a special case, but only uses id=? in the query
context.getContentResolver().update(uri, values);


那么我是否需要转义特殊字符?

最佳答案

//try to add this fillter
InputFilter[] filters = new InputFilter[1];

filters[0] = new InputFilter() {
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (end > start) {
            String destTxt = dest.toString();
            String resultingTxt = destTxt.substring(0, dstart) + source.subSequence(start, end) + destTxt.substring(dend);

            if (!resultingTxt.matches("[a-zA-Z0-9?]*")) {
                if (source instanceof Spanned) {
                    SpannableString sp = new SpannableString("");
                    return sp;
                } else {
                    return "";
                }
            }
        }

        return null;
    }
};

edtiText.setFilters(filters);

关于android - EditText中的多种语言,不带特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21542732/

相关文章:

java - Android Studio 默认值/传递变量

java - 如果在另一个 Activity 中添加数据,如何更新 recyclerView?

java - 获取用户在 TextView 中设置的 Short 值

android - 来自 ActivityGroup 的子 Activity 仅 "sometimes"调用 onBackPressed()

android - 如何在 Corona 中使用 "back"硬件按钮?

android - 向 Android 模拟器发送多点触控事件

java - "SQLITE Full"异常

sqlite - 二郎-sqlite3 sqlite3 :table_info error

java - 带有 TextWatcher 的 EditText 显示有线行为并在递归循环中移动

android - 无法在 Ui Automator 中运行 adb 命令