80 votes

Comment déterminer si une chaîne a des caractères non alphanumériques ?

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.

157voto

Fabian Barney Points 5707

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

27voto

loscuropresagio Points 1219

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);

6voto

Mechkov Points 2603

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.

4voto

Dan Bray Points 576

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.

2voto

Shaun Points 1842

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.

Prograide.com

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.

Powered by:

X