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
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
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
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.
Essaye ça
Pattern p = Pattern.compile("[a-z]");
if (p.matcher(stringToMatch).find()) {
//...
}