¿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.
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();
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);
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.
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