89 votes

Vérifiez si la chaîne ne contient que des lettres

L'idée est de faire lire une chaîne et de vérifier qu'elle ne contient aucun caractère numérique. Donc quelque chose comme "smith23" ne serait pas acceptable.

145voto

adarshr Points 25912

Que veux-tu? Rapidité ou simplicité ? Pour la vitesse, optez pour une approche basée sur une boucle. Pour plus de simplicité, optez pour une approche basée sur RegEx à une ligne.

La vitesse

 public boolean isAlpha(String name) {
    char[] chars = name.toCharArray();

    for (char c : chars) {
        if(!Character.isLetter(c)) {
            return false;
        }
    }

    return true;
}

Simplicité

 public boolean isAlpha(String name) {
    return name.matches("[a-zA-Z]+");
}

79voto

Shemhamforasch Points 153

Expressions lambda Java 8. À la fois rapide et simple.

 boolean allLetters = someString.chars().allMatch(Character::isLetter);

40voto

Robby Pond Points 37875

Ou si vous utilisez Apache Commons, [StringUtils.isAlpha()] .

12voto

shalamus Points 467

Premier modèle d'importation :

 import java.util.regex.Pattern;

Ensuite, utilisez ce code simple :

 String s = "smith23";
if (Pattern.matches("[a-zA-Z]+",s)) { 
  // Do something
  System.out.println("Yes, string contains letters only");
}else{
  System.out.println("Nope, Other characters detected");    
}

Cela affichera :

Non, autres caractères détectés

6voto

iyas Points 61

J'ai utilisé cette expression regex (".*[a-zA-Z]+.*") . Avec l' if not , il évitera toutes les expressions qui ont une lettre avant, à la fin ou entre tout autre type de caractère.

 String strWithLetters = "123AZ456";
if(! Pattern.matches(".*[a-zA-Z]+.*", str1))
 return true;
else return false

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