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 retourner true.
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 retourner true.
Utilisation d'Apache Commons Lang :
!StringUtils.isAlphanumeric(String)
Itérer alternativement sur les caractères de String et vérifier avec :
!Character.isLetterOrDigit(char)
Il te reste encore un problème :
Votre exemple de chaîne "abcdefà" est alphanumérique, car à
est une lettre. Mais je pense que vous voulez qu'il soit considéré comme non alphanumérique, non ?!
Vous pouvez donc utiliser une 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 à le faire en utilisant 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 ].*$");
une autre consiste à utiliser une bibliothèque externe, telle qu'Apache commons :
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
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'avoir à importer des bibliothèques externes et le code peut être facilement modifié si vous souhaitez ultérieurement effectuer différents contrôles de validation sur les chaînes.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.