La meilleure façon consiste à utiliser une expression régulière, un opérateur ternaire et le .test() méthode pour les chaînes.
Je vous laisse à Google les tenants et aboutissants des expressions régulières et la méthode de test pour les chaînes (elles sont faciles à trouver), mais ici nous allons l'utiliser pour tester votre variable.
/[a-z]/i.test(your-character-here)
Cela renverra VRAI ou FAUX selon que votre personnage correspond ou non au jeu de caractères dans l'expression régulière. Notre expression régulière vérifie toutes les lettres az /[a-z]/quel que soit leur cas grâce à lai drapeau.
Ainsi, un test de base serait:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
Nous devons maintenant déterminer s'il s'agit de majuscules ou de minuscules. Donc, si nous supprimons le idrapeau de notre expression régulière, notre code ci-dessus testera les lettres minuscules az. Et si nous collons une autre ifdéclaration dans le elsede notre premierif déclaration, nous pouvons également tester les majuscules en utilisant AZ. Comme ça:
var theAnswer = "";
if (/[a-z]/.test(your-character-here)) {
theAnswer = "It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
theAnswer = "It's an upper case letter.";
}
Et juste au cas où ce n'est pas une lettre, nous pouvons ajouter une dernière déclaration else:
var theAnswer = "";
if (/[a-z]/.test(your-character-here)) {
theAnswer = "It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
theAnswer = "It's an upper case letter.";
} else {
theAnswer = "It's not a letter."
}
Le code ci-dessus fonctionnerait. Mais c'est un peu moche. Au lieu de cela, nous pouvons utiliser un "opérateur ternaire" pour remplacer nos if-elsedéclarations ci-dessus. Les opérateurs ternaires ne sont que des moyens simples et abrégés de coder un if-else. La syntaxe est simple:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
Et ceux-ci peuvent également être imbriqués les uns dans les autres. Ainsi, une fonction pourrait ressembler à:
var theAnswer = "";
function whichCase(theLetter) {
theAnswer = /[a-z]/.test(theLetter) ? "It's lower case." : "";
theAnswer = /[A-Z]/.test(theLetter) ? "It's upper case." : "";
return(theAnswer);
}
Le code ci-dessus semble bon, mais ne fonctionnera pas tout à fait, car si notre caractère est en minuscules, theAnswer est réglé sur "" lorsqu'il teste les majuscules, alors permet de les imbriquer:
var theAnswer = "";
function whichCase(theLetter) {
theAnswer = /[a-z]/.test(theLetter) ? "It's lower case." : (/[A-Z]/.test(theLetter) ? "It's upper case." : "It's not a letter.");
return(theAnswer);
}
Cela fonctionnera très bien! Mais il n'est pas nécessaire d'avoir deux lignes distinctes pour définir la variable theAnswer, puis la renvoyer. Et nous devrions utiliser letet constplutôt que var(recherchez-les si vous ne savez pas pourquoi). Une fois ces modifications effectuées:
function whichCase(theLetter) {
return(/[A-Z]/.test(theLetter) ? "It's upper case." : (/[a-z]/.test(theLetter) ? "It's lower case." : "It's not a letter."));
}
Et nous nous retrouvons avec un morceau de code élégant et concis. ;)