J'ai besoin d'une méthode qui puisse me dire si une chaîne a des caractères non alphanumériques.
Par exemple, si la chaîne est "abcdef?" ou "abcdefà", la méthode doit renvoyer true.
En utilisant Apache Commons Lang:
!StringUtils.isAlphanumeric(String)
Parcourez alternativement les caractères de String et vérifiez avec:
!Character.isLetterOrDigit(char)
Il vous reste encore un problème: votre exemple de chaîne "abcdefà" est alphanumérique, puisque à
est une lettre. Mais je pense que vous voulez que cela soit considéré comme non alphanumérique, non?!
Donc, vous voudrez peut-être utiliser l'expression régulière à la place:
String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
Une approche consiste à utiliser la classe String elle-même. Disons que votre chaîne est quelque chose comme ça:
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
un autre consiste à utiliser une bibliothèque externe, telle que Apache commons:
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
Vous devez parcourir chaque caractère de la chaîne et vérifier Character.isDigit(char);
ou Character.isletter(char);
Alternativement, vous pouvez utiliser regex.
Utilisez cette fonction pour vérifier si une chaîne est alphanumérique:
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
Cela évite d'importer des bibliothèques externes et le code peut facilement être modifié si vous souhaitez ultérieurement effectuer différentes vérifications de validation des chaînes.
Si vous pouvez utiliser la bibliothèque Apache Commons, alors Commons-Lang StringUtils
a une méthode appelée isAlphanumeric()
qui fait ce que vous recherchez.
string.matches("^\\W*$");
devrait faire ce que vous voulez, mais n'inclut pas les espaces. string.matches("^(?:\\W|\\s)*$");
correspond également aux espaces.
Vous pouvez utiliser la méthode statique isLetter (char c) de la classe Character dans Java.lang.
public boolean isAlpha(String s) {
char[] charArr = s.toCharArray();
for(char c : charArr) {
if(!Character.isLetter(c)) {
return false;
}
}
return true;
}