Найкращий спосіб - використовувати регулярний вираз, потрійний оператор і вбудований .test() метод для рядків.
Я залишаю вам в Google регулярні вирази та методи тестування рядків (їх легко знайти), але тут ми використаємо це для тестування вашої змінної.
/[a-z]/i.test(your-character-here)
Це поверне ПРАВИЛЬНУ ЛОЖУ на основі того, чи відповідає ваш персонаж символу, встановленому в регулярному виразі. Наш регулярний вираз перевіряє всі літери 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."));
}
І закінчуємо вишуканий, стислий фрагмент коду. ;)