如何检测特殊字符在编辑文本和响应(安卓)显示吐司?(How to detect special ch

2019-08-31 21:02发布

我的英文不好的道歉,我使用谷歌翻译。

我创建其中用户必须创建一个新的配置文件的活动。 我把限制编辑的15个字符的文本,我想,如果新的配置文件名称有空格或特殊字符显示警告。 随着在线视频游戏

下面的代码帮我检测的空间,而不是特殊字符。

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

@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();
    }
}

Answer 1:

You can use:

string.matches("[a-zA-Z.? ]*")

That will evaluate to true if every character in the string is either a lowercase letter a-z, an uppercase letter A-Z, a period, a question mark, or a space.

like:

public void Click(View v) {
        if (v.getId() == R.id.button1) {
            String nombre = textMessage.getText().toString();
            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.matches("[a-zA-Z.? ]*")) {
                Toast aviso = Toast
                        .makeText(
                                getApplicationContext(),
                                "No son permitidos los espacios ni los caracteres especiales",
                                Toast.LENGTH_LONG);
                aviso.show();

            } else {

                // Do what ever you want
            }

        }
    }

for allow a-z, A-Z, 0-9 use "[a-zA-Z0-9.? ]*"



Answer 2:

使用下面的行中的EditText在XML文件中,使得其仅进入字母和数字;

 android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

如果您需要为您的EditText动态响应使用textwatcher;

   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) {}
   });


Answer 3:

你去768,16对于Android的Saripaar ,重量很轻,为Android简单的API。 你的情况,你可以在你EDITTEXT instence做以下的东西......

@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将导致你有在适当的方式,您的验证过程更contorls。 你也可以使用[^a-zA-Z0-9]而不是[\\W+]为您reguler表达模式。

希望这可以帮助..:)



Answer 4:

如果你想拿起特殊字符,支持不仅仅是非常resrictive一套英文字母的选择和数量的更多:

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;
}


Answer 5:

正如我不能在其他帖子发表评论,我将补充最投票的答案与一个更时尚的视觉分辨率的提示。

首先,EDITTEXT(etNombre)数据传递给字符串变量。 实施例: String nombre = etNombre.getText().toString();

然后,使用一个if来验证:

if (!nombre.matches("[a-zA-Z.? ]*")) {

    etNombre.setError("Your message here");

}

该解决方案将设置一个“!” 图标上EDITTEXT和它比面包要好得多,因为该消息被指向用户的错误。



Answer 6:

使用:

public void click (View view) {

    if (edittext.matcher(abcd).find ()) {
       Toast.maketext(this, "abcd Found", TOAST.LENGTH_LONG).show ();
    }

}


文章来源: How to detect special characters in an edit text and display a Toast in response (Android)?