¿Cómo detectar caracteres especiales en un texto de edición y mostrar un Toast en respuesta (Android)?

Una disculpa por mi mal inglés, estoy usando google translate.

Estoy creando una actividad en la que los usuarios deben crear un nuevo perfil. Puse un límite para editar el texto de 15 caracteres y quiero que si el nombre del nuevo perfil tiene espacios o caracteres especiales mostrar una advertencia. Como los videojuegos en línea

El siguiente código me ayuda a detectar espacios, pero no caracteres especiales.

Necesito ayuda para identificar caracteres especiales y mostrar una advertencia en respuesta.

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

Puedes usar:

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

Se evaluará a true si cada carácter de la cadena es una letra minúscula az, una letra mayúscula AZ, un punto, un signo de interrogación o un espacio.

me gusta:

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

Para permitir az, AZ, 0-9 utilizar "[a-zA-Z0-9.? ]*"

Usted shoud ir para Android Saripaar , una API muy ligero y simple para Android. En tu caso, puedes hacer las siguientes cosas en tu instancia de EditText …

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

Utilizando esta api le llevará a tener más contorls en su proceso de validación en la forma correcta. También puede utilizar [^a-zA-Z0-9] lugar de [\\W+] como su patrón de expresión regulador.

Espero que esto ayude..:)

Utilice la línea siguiente en edittext en el archivo xml para que sólo ingrese los alfabetos y los números;

  android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 

Si necesita respuesta dinámica use textwatcher para su edittext;

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

Si quieres recoger los caracteres especiales y apoyar más que el conjunto muy rudo de la apuesta alfa Inglés y números:

 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; } 
  • Borrar texto en EditText cuando se ingresa
  • Campo de contraseña numérica de Android
  • Cómo cambiar la posición de etiqueta flotante de TextInputLayout en android
  • Android ScaleAnimation no escala el área seleccionable
  • Números sólo de teléfono como teclado numérico
  • Android: Personajes dejados atrás en EditText
  • Número de teléfono multilínea de Android edittext
  • Quiero que mi campo EditText cambie su color mientras le ingresa valores
  • Cambiar altura de línea / línea en EditText en un nivel de carácter
  • MultiautoCompleteTextView ime keyabord no muestra sugerencias
  • Cómo agregar texto a un edittext en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.