Der beste Weg ist, einen regulären Ausdruck, einen ternären Operator und den eingebauten zu verwenden .test() Methode für Zeichenfolgen.
Ich überlasse es Google, die Vor- und Nachteile regulärer Ausdrücke und die Testmethode für Zeichenfolgen (sie sind leicht zu finden) zu googeln, aber hier werden wir sie zum Testen Ihrer Variablen verwenden.
/[a-z]/i.test(your-character-here)
Dies gibt TRUE of FALSE zurück, je nachdem, ob Ihr Zeichen mit dem Zeichensatz im regulären Ausdruck übereinstimmt oder nicht. Unser regulärer Ausdruck prüft /[a-z]/dank deri Flagge, .
Ein grundlegender Test wäre also:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
Jetzt müssen wir feststellen, ob es sich um Groß- oder Kleinbuchstaben handelt. Wenn wir also das iFlag aus unserem regulären Ausdruck entfernen , wird unser obiger Code auf Kleinbuchstaben az prüfen. Und wenn wir eine andere ifAussage in die elseerste ifAussage einfügen, können wir auch mit AZ auf Großbuchstaben testen. So was:
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.";
}
Und für den Fall, dass es sich nicht um einen Brief handelt, können wir eine letzte else-Anweisung hinzufügen:
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."
}
Der obige Code würde funktionieren. Aber es ist irgendwie hässlich. Stattdessen können wir einen "ternären Operator" verwenden, um unsere if-elseobigen Aussagen zu ersetzen . Ternäre Operatoren sind nur eine Abkürzung für einfache Codierungsmethoden if-else. Die Syntax ist einfach:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
Und diese können auch ineinander verschachtelt werden. Eine Funktion könnte also so aussehen:
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);
}
Der obige Code sieht gut aus, funktioniert aber nicht ganz, denn wenn unser Zeichen in Kleinbuchstaben geschrieben ist, theAnswerwird er beim Testen auf Großbuchstaben auf "" gesetzt. Verschachteln Sie sie also:
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);
}
Das wird super funktionieren! Es sind jedoch nicht zwei separate Zeilen erforderlich, um die Variable festzulegen theAnswerund dann zurückzugeben. Und wir sollten verwenden letund constnicht var(schauen Sie nach, wenn Sie nicht sicher sind, warum). Sobald wir diese Änderungen vorgenommen haben:
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."));
}
Und am Ende erhalten wir einen eleganten, prägnanten Code. ;)