Najlepszym sposobem jest użycie wyrażenia regularnego, operatora trójskładnikowego i wbudowanej .test()metody ciągów.
Pozostawiam wam Google tajniki wyrażeń regularnych i metodę testowania ciągów (są łatwe do znalezienia), ale tutaj użyjemy jej do przetestowania zmiennej.
/[a-z]/i.test(your-character-here)
Zwróci PRAWDA FAŁSZ na podstawie tego, czy twoja postać pasuje do zestawu znaków w wyrażeniu regularnym. Nasze wyrażenie regularne sprawdza wszystkie litery az, /[a-z]/niezależnie od ich wielkości, dzięki ifladze.
Tak więc podstawowym testem byłoby:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
Teraz musimy ustalić, czy jest to duża czy mała litera. Tak więc, jeśli usuniemy iflagę z naszego wyrażenia regularnego, to nasz powyższy kod będzie sprawdzał małe litery az. A jeśli przykleimy inną ifinstrukcję do elsenaszej pierwszej ifinstrukcji, możemy również przetestować duże litery, używając AZ. Lubię to:
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.";
}
I na wypadek, gdyby nie był to list, możemy dodać jeszcze jedno zdanie końcowe:
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."
}
Powyższy kod działałby. Ale to trochę brzydkie. Zamiast tego możemy użyć „trójskładnikowego operatora”, aby zastąpić if-elsepowyższe stwierdzenia. Operatory trójskładnikowe to po prostu stenograficzne proste sposoby kodowania if-else. Składnia jest łatwa:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
Można je również zagnieżdżać w sobie. Funkcja może więc wyglądać następująco:
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);
}
Powyższy kod wygląda dobrze, ale nie do końca działa, ponieważ jeśli nasz znak jest pisany małymi literami, theAnswerzostaje ustawiony na „” podczas testowania wielkich liter, więc pozwólmy na ich zagnieżdżenie:
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);
}
To zadziała świetnie! Ale nie trzeba mieć dwóch oddzielnych linii do ustawienia zmiennej, theAnswera następnie jej zwrócenia. Powinniśmy raczej używać leti constzamiast var(poszukaj ich, jeśli nie jesteś pewien, dlaczego). Po wprowadzeniu tych zmian:
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."));
}
W rezultacie otrzymujemy elegancki, zwięzły fragment kodu. ;)