Necesito un método que pueda decirme si una Cadena tiene caracteres no alfanuméricos.¿Cómo determinar si una cadena tiene caracteres no alfanuméricos?
Por ejemplo, si la cadena es "abcdef?" o "abcdefà", el método debe devolver verdadero.
Necesito un método que pueda decirme si una Cadena tiene caracteres no alfanuméricos.¿Cómo determinar si una cadena tiene caracteres no alfanuméricos?
Por ejemplo, si la cadena es "abcdef?" o "abcdefà", el método debe devolver verdadero.
El uso de Apache Commons Lang:
!StringUtils.isAlphanumeric(String)
Alternativly iterar sobre los personajes de Cuerda y comprobar con:
!Character.isLetterOrDigit(char)
te han todavía queda un problema: Su ejemplo de cadena "abcdefà" es alfanumérico, desde à
es una carta. Pero creo que quieres que se lo considere no alfanumérico, ¿verdad?
Así que es posible que desee utilizar expresiones regulares en su lugar:
String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
Me gustaría evitar la importación de librerías externas si no es estrictamente necesario. Y sí: quiero que se lo considere como no alfanumérico. – lugeno
usted tiene que ir a través de cada carácter de la cadena y comprobar Character.isDigit(char);
o Character.isletter(char);
Como alternativa, puede utilizar expresiones regulares.
Por ejemplo, "-1234" es un número, no una cadena alfanumérica. Pero su lógica Character.isDigit devolverá false para "-". :( – Abhishek
Si puede utilizar la biblioteca de Apache Commons, entonces Commons-Lang StringUtils
tiene un método llamado isAlphanumeric()
que hace lo que está buscando.
Un método consiste en hacer que el uso de la misma clase String. Digamos que su cadena es algo así:
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
otra es utilizar una biblioteca externa, tales como bienes comunes de Apache:
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
+1: regex es aquí el ganador, creo que ya que el OP no quiere verificar realmente caracteres alfanuméricos. Quiere algo como 'hasSpecialCharacters (String)' con su propia definición de "especial". –
Eso no funcionará del todo: 'String.matches (...)' en Java comprueba si la expresión regular coincide con * cadena completa * – ruakh
Tienes razón. Modifiqué la expresión regular – loscuropresagio
string.matches("^\\W*$");
debe hacer lo que quiera, pero no lo hace incluye espacios en blanco. string.matches("^(?:\\W|\\s)*$");
coincide con el espacio en blanco también.
Puede utilizar el método isLetter (char c) estático de la clase de caracteres en Java.lang.
public boolean isAlpha(String s) {
char[] charArr = s.toCharArray();
for(char c : charArr) {
if(!Character.isLetter(c)) {
return false;
}
}
return true;
}
Utilice esta función para comprobar si una cadena es alfanumérico:
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
Se evita así tener que importar bibliotecas externas y el código puede ser fácilmente modificada en caso de que más adelante desee llevar a cabo diferentes pruebas de validación en las cadenas .
http://stackoverflow.com/questions/1795402/java-check-a-string-if-there-is-a-special-character-in-it –
http://stackoverflow.com/questions/11241690/regex-for-checking-if-a-string-is-strict-alfanumérico – treecoder