首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检测编辑文本中的特殊字符并在响应中显示Toast (Android)?

如何检测编辑文本中的特殊字符并在响应中显示Toast (Android)?
EN

Stack Overflow用户
提问于 2013-04-23 12:29:38
回答 5查看 29.6K关注 0票数 6

为我糟糕的英语道歉,我正在使用谷歌翻译。

我正在创建一个活动,其中用户必须创建一个新的配置文件。我将编辑文本限制在15个字符以内,并且我希望如果新的配置文件名称包含空格或特殊字符,则会显示警告。作为在线视频游戏

下面的代码帮助我检测空格,但不是特殊字符。

我需要帮助来识别特殊字符并在响应中显示警告。

代码语言:javascript
复制
@Override
public void onClick(View v) {
    //Convertimos el contenido en la caja de texto en un String
    String nombre = nombreUsuario.getText().toString();

    //Si el tamaño del String es igual a 0, que es es lo mismo que dijeramos "Si esta vacio"
    if (nombre.length() == 0) {
        //Creamos el aviso
        Toast aviso = Toast.makeText(getApplicationContext(), "Por favor introduce un nombre de Usuario", Toast.LENGTH_LONG);
        aviso.show();

    } else if (nombre.contains(" ") | nombre.contains("\\W")) {
        Toast aviso = Toast.makeText(getApplicationContext(), "No son permitidos los espacios ni los caracteres especiales", Toast.LENGTH_LONG);
        aviso.show();
    } else {
        nombre = nombreUsuario.getText().toString();
        //Conectamos con la base de datos
        //Creamos un bojeto y lo iniciamos con new
        Plantilla entrada = new Plantilla(CrearUsuarioActivity.this);
        entrada.abrir();

        //creamos un metodo para escribir en la base de datos (crear entradas)
        entrada.crearEntrada(nombre);
        entrada.cerrar();
    }
}
EN

回答 5

Stack Overflow用户

发布于 2015-05-04 19:34:46

在xml文件的edittext中使用下面这一行,这样它只输入字母和数字;

代码语言:javascript
复制
 android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

如果您需要动态响应,请为edittext使用textwatcher;

代码语言:javascript
复制
   yourEditText.addTextChangedListener(new TextWatcher() {

      public void afterTextChanged(Editable s) {

       // Here you need to check special character, if found then show error message

      if (s.toString().contains("%"))
      {
           // Display error message
      }

      public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

      public void onTextChanged(CharSequence s, int start, int before, int count) {}
   });
票数 3
EN

Stack Overflow用户

发布于 2017-02-28 22:11:56

如果你想选择特殊的字符,并且支持的不仅仅是英语字母和数字的集合:

代码语言:javascript
复制
String edit_text_name = YourEditTextName.getText().toString();

Pattern regex = Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]");

if (regex.matcher(edit_text_name).find()) {
        Log.d(TAG, "SPECIAL CHARS FOUND");
        //handle your action here toast message/ snackbar or something else
        return;
}
票数 3
EN

Stack Overflow用户

发布于 2013-04-23 13:06:51

你应该选择Android Saripaar,这是一个非常轻量级和简单的安卓应用程序接口。在您的情况下,您可以在您的EditText实例上执行以下操作...

代码语言:javascript
复制
@TextRule(order = 1, minLength = 15, message = "Enter atleast 15 characters.")
@Regex(order = 2, pattern = "[\\W+]", message = "Special characters are not allowed.")
private TextView yourEditText;

使用此api将引导您以适当的方式在验证过程中进行更多的扭曲。您还可以使用[^a-zA-Z0-9]而不是[\\W+]作为规则表达式模式。

希望这能有所帮助。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16160989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档