¿Cómo determinar si una cadena tiene caracteres no alfanuméricos?


Necesito un método que pueda decirme si una cadena tiene caracteres no alfanuméricos.

Por ejemplo, si la cadena es " abcdef?"o "abcdefà", el método debe devolver true.

Author: Dave Newton, 0000-00-00

3 answers

Usando Apache Commons Lang:

!StringUtils.isAlphanumeric(String)

Iterar alternativamente sobre los caracteres de la cadena y comprobar con:

!Character.isLetterOrDigit(char)

Todavía te queda un problema: La cadena de ejemplo "abcdefà" es alfanumérica, ya que à es una letra. Pero creo que quieres que sea considerado no alfanumérico, ¿verdad?!

Así que es posible que desee utilizar la expresión regular en su lugar:

String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
 125
Author: Fabian Barney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-23 20:39:03

Un enfoque es hacerlo usando la propia clase String. Digamos que tu cadena es algo así:

String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");

Otra es usar una biblioteca externa, como Apache commons:

String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
 22
Author: loscuropresagio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-23 20:40:07

Tienes que ir a través de cada carácter en la cadena y comprobar Character.isDigit(char); o Character.isletter(char);

Alternativamente, puede usar expresiones regulares.

 5
Author: Mechkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-23 19:57:33