如何限制 Android EditText 字段中的特殊字符?

发布于 2024-09-12 09:26:52 字数 38 浏览 5 评论 0原文

如何限制 Android EditText 字段中的特殊字符?

How to restrict special characters from an Android EditText field?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

走野 2024-09-19 09:26:52

您是否尝试过添加 android:digits="abcde.....0123456789" 属性?
尽管 android:digits 指定它是一个数字字段,但将其设置为接受字母和特殊字符(在 SDK-7 上测试)确实对我有用。

如果这不起作用,那么您必须实现 KeyListener
请参阅:http://developer. android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)

Have you tried adding the android:digits="abcde.....0123456789" attribute?
Although the android:digits specify that it is a numeric field, it does work for me to set it to accept letters as well, and special characters as well (tested on SDK-7).

If this doesn't work then you'll have to implement KeyListener
see: http://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)

深海夜未眠 2024-09-19 09:26:52

只需将 EditText 对象传递给此方法即可。还要在变量 blockCharacterSet 中添加要阻止的值。

private void disableSpecialChar(EditText editText) {
      final String blockCharacterSet = "<>";

      InputFilter filter = new InputFilter() {

       @Override
       public CharSequence filter(CharSequence source, int start, int end,
         Spanned dest, int dstart, int dend) {

        if (source != null && blockCharacterSet.contains(("" + source))) {
         return "";
        }
        return null;
       }
      };

      editText.setFilters(new InputFilter[] { filter });

     }

Just pass the EditText object to this method. Also add the values that is to be blocked in the variable blockCharacterSet.

private void disableSpecialChar(EditText editText) {
      final String blockCharacterSet = "<>";

      InputFilter filter = new InputFilter() {

       @Override
       public CharSequence filter(CharSequence source, int start, int end,
         Spanned dest, int dstart, int dend) {

        if (source != null && blockCharacterSet.contains(("" + source))) {
         return "";
        }
        return null;
       }
      };

      editText.setFilters(new InputFilter[] { filter });

     }
居里长安 2024-09-19 09:26:52

我在回答中解决了这个问题:防止 EditText 中的特殊符号。您可以根据您的要求更改正则表达式。

I have solved this problem in my answer: Prevent special symbols in EditText. You can change the regex as per your requirement.

神经暖 2024-09-19 09:26:52

只需将 xml 行下方放入 edittext 块中即可。

android:digits="abc"

这将允许仅输入 a、b 和 c 字符。

Just put below xml line inside edittext block.

android:digits="abc"

This will allow to enter only a,b and c characters.

青巷忧颜 2024-09-19 09:26:52

这是包含空格的 Kotlin 版本:

private val userNameFilter =
    InputFilter { source, start, end, dest, dStart, dEnd ->
        for (i in start until end) {
            if (!Character.isLetterOrDigit(source[i]) && !Character.isWhitespace(source[i])) {
                return@InputFilter ""
            }
        }
        null
    }

Here's a Kotlin version including whitespace:

private val userNameFilter =
    InputFilter { source, start, end, dest, dStart, dEnd ->
        for (i in start until end) {
            if (!Character.isLetterOrDigit(source[i]) && !Character.isWhitespace(source[i])) {
                return@InputFilter ""
            }
        }
        null
    }
堇色安年 2024-09-19 09:26:52

我创建了一个类,用于更灵活地设置 EditText 的输入约束:

https://github.com/devapro/NumberWatcher< /a>

它仅适用于数字输入,但您可以更改任何类型。

I created a class for more flexible settings of input constraints to EditText:

https://github.com/devapro/NumberWatcher

It is implementation only for numbers input, but you can change it for any of the types.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文