Лучший способ - использовать регулярное выражение, троичный оператор и встроенный .test()метод для строк.
Я оставляю вам в Google все входы и выходы регулярных выражений и метод теста для строк (их легко найти), но здесь мы будем использовать его для проверки вашей переменной.
/[a-z]/i.test(your-character-here)
Это вернет TRUE of FALSE в зависимости от того, совпадает ли ваш символ с набором символов в регулярном выражении. Наше регулярное выражение проверяет все буквы az /[a-z]/независимо от их регистра благодаря iфлагу.
Итак, базовый тест будет:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
Теперь нам нужно определить, является ли он верхним или нижним регистром. Итак, если мы удалим iфлаг из нашего регулярного выражения, то наш код выше будет проверять строчные буквы az. И если мы добавим еще одно ifутверждение в elseнашем первом ifутверждении, мы можем проверить и верхний регистр, используя AZ. Как это:
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.";
}
И на всякий случай, если это не буква, мы можем добавить еще одно утверждение:
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."
}
Приведенный выше код будет работать. Но это некрасиво. Вместо этого мы можем использовать «троичный оператор» для замены наших if-elseутверждений выше. Тернарные операторы являются просто краткими простыми способами кодирования if-else. Синтаксис прост:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
И они тоже могут быть вложены друг в друга. Так что функция может выглядеть так:
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);
}
Вышеприведенный код выглядит хорошо, но не совсем сработает, потому что, если наш символ в нижнем регистре, theAnswerпри проверке на верхний регистр устанавливается значение «», поэтому давайте вложим их:
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);
}
Это будет отлично работать! Но нет необходимости иметь две отдельные строки для установки переменной theAnswerи ее возврата. И мы должны использовать letи constвместо var(смотрите те, если вы не знаете , почему). Как только мы внесем эти изменения:
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."));
}
И мы получаем элегантный, лаконичный кусок кода. ;)