web-dev-qa-db-fra.com

Indique si la chaîne contient des caractères a-z

Je suis très nouveau en programmation. Je veux vérifier si une chaîne s contient des caractères a-z. J'utilise:

if(s.contains("a") || s.contains("b") || ... {
}

mais existe-t-il un moyen de le faire en code plus court? Merci beaucoup

10
user2276872

Vous pouvez utiliser des expressions régulières

// to emulate contains, [a-z] will fail on more than one character, 
// so you must add .* on both sides.
if (s.matches(".*[a-z].*")) { 
    // Do something
}

cela vérifiera si la chaîne contient au moins un caractère a-z

pour vérifier si tous les caractères sont de a à z, utilisez:

if ( ! s.matches(".*[^a-z].*") ) { 
    // Do something
}

pour plus d'informations sur les expressions régulières en Java

http://docs.Oracle.com/javase/6/docs/api/Java/util/regex/Pattern.html

26
mmohab

En plus des expressions régulières, et en supposant que vous vouliez réellement savoir si la chaîne ne contient pas uniquement des caractères, vous pouvez utiliser Character.isLetter (char) -

boolean hasNonLetters = false;
for (char ch : s.toCharArray()) {
  if (!Character.isLetter(ch)) {
    hasNonLetters = true;
    break;
  }
}
// hasNonLetters is true only if the String contains something that isn't a letter -

Depuis le Javadoc pour Character.isLetter(char),

Un caractère est considéré comme une lettre si son type de catégorie générale, fourni par Character.getType(ch), est l'un des suivants:

UPPERCASE_LETTER
LOWERCASE_LETTER
TITLECASE_LETTER
MODIFIER_LETTER
OTHER_LETTER 
3
Elliott Frisch

Utilisez des expressions régulières. La méthode Pattern.matches () peut le faire facilement. Par exemple:

Pattern.matches("[a-z]", "TESTING STRING a");

Si vous devez vérifier un grand nombre de chaînes, cette classe peut être compilée en interne pour améliorer les performances.

1
Dan S

Essaye ça

Pattern p = Pattern.compile("[a-z]");
if (p.matcher(stringToMatch).find()) {
    //...
}
0
Giru Bhai