Il modo migliore è usare un'espressione regolare, un operatore ternario e il .test()metodo incorporato per le stringhe.
Vi lascio a Google i dettagli delle espressioni regolari e il metodo di test per le stringhe (sono facili da trovare), ma qui lo useremo per testare la vostra variabile.
/[a-z]/i.test(your-character-here)
Ciò restituirà VERO di FALSO in base al fatto che il tuo personaggio corrisponda o meno al set di caratteri nell'espressione regolare. La nostra espressione regolare controlla tutte le lettere az /[a-z]/indipendentemente dal loro caso grazie alla ibandiera.
Quindi, un test di base sarebbe:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
Ora dobbiamo determinare se è maiuscolo o minuscolo. Quindi, se rimuoviamo la ibandiera dalla nostra espressione regolare, il nostro codice sopra testerà le lettere minuscole az. E se inseriamo un'altra ifaffermazione nella elsenostra prima ifaffermazione, possiamo testare anche le maiuscole usando AZ. Come questo:
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.";
}
E nel caso in cui non sia una lettera, possiamo aggiungere una dichiarazione else finale:
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."
}
Il codice sopra funzionerebbe. Ma è un po 'brutto. Invece, possiamo usare un "operatore ternario" per sostituire le nostre if-elsedichiarazioni di cui sopra. Gli operatori ternari sono solo modi abbreviati di codificare un if-else. La sintassi è semplice:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
E anche questi possono essere nidificati l'uno nell'altro. Quindi una funzione potrebbe apparire come:
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);
}
Il codice sopra sembra buono, ma non funzionerà del tutto, perché se il nostro carattere è in minuscolo, theAnswerviene impostato su "" quando viene testato in maiuscolo, quindi nidificali:
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);
}
Funzionerà alla grande! Ma non è necessario disporre di due righe separate per impostare la variabile theAnswere quindi restituirla. E dovremmo usare lete constpiuttosto che var(cercare quelli se non sei sicuro del perché). Una volta apportate tali modifiche:
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."));
}
E finiamo con un codice elegante e conciso. ;)