Решаем задачу на JavaScript: преобразование строк
Решение задач — это важная тренировка: чем больше упражнений вы решите, тем лучше будете разбираться в языке и с более высокой вероятностью пройдете собеседование. Преподаватель JavaScript в Эльбрус Буткемп Адам Балкоев разберет популярную задачу на преобразование строк.
Прежде, чем начать решать задачу на преобразование строк, уточним ряд моментов. Для записи кода используем сайт — trycode.pw. Это песочница, где в левой части можно писать код, а в правой — видеть результаты его выполнения в имитации терминала. Кроме того, укажем язык программирования JavaScript и отключим автозапуск проекта.
Условия задачи звучат так:
Напишите функцию, которая принимает параметр с строкой и преобразовывает эту строку в следующий вид. Например:
"Привет Мир" => "прИвЕт мИр"
"Азбука Вкуса" => "АзбУкА ВкУсА"
Подсказка — "а", "е", "ё", "и", "о", "у", "ы", "э", "ю", "я"
Начнем решать задачу с объявления функции, которая принимает строку и возвращает ее после форматирования:
function stringChanger(str) {
let result = ""
return result
}
Функция преобразования строки выше — это каркас, который нужно заполнить в соответствии с условиями задачи.
Создадим цикл for, в котором передадим три параметра: счетчик, условие и шаг. Затем пропишем if: цикл должен пройти по всем буквам в строке и проверить, являются ли они гласными или согласными. Провести проверки поможет строка-подсказка, которую мы поместим в переменную letters:
function stringChanger(str) {
let result = ""
let letters = ["а", "е", "ё", "и", "о", "у", "ы", "э", "ю", "я"]
for (let i = 0; i < str.length; i += 1) {
if (letters.includes(str[i])) {
result = result + str[i].toUpperCase()
} else {
result = result + str[i].toLowerCase()
}
}
return result
}
В условии if происходит следующее: оно проходит по все буквам в строке и проверят, какие буквы в них содержатся, гласные или согласные. Для этого используем метод includes — он возвращает булевое значение (true или false). Если буква гласная, она попадает в result и преобразуется в верхний регистр.
toLowerCase и toUpperCase — методы строк, которые преобразование в строку буквы в нижний и верхний регистры соответственно.
Теперь запустим функцию и проверим, правильно ли работает код. Для этого ниже вызовем в консоли следующее:
console.log(stringChanger("Привет Мир"))
В терминале видно, что код выполняется так, как ожидалось: все гласные буквы перешли в верхний регистр, а согласные — в нижний:
Однако есть один нюанс: при вызове другой фразы, Азбука Вкуса, первая гласная «а» перейдет в нижний регистр.
При выполнении if (letters.includes(str[i]) программа не увидит в массиве гласных а в верхнем регистре и решит, что ее нужно преобразовать в нижний. Чтобы решить эту проблему, нужно либо добавить в проверочный массив все гласные в верхнем регистре, либо преобразовать все гласные в момент проверки в нижний регистр. Для этого добавим в if метод строки LowerCase:
function stringChanger(str) {
let result = ""
let letters = ["а", "е", "ё", "и", "о", "у", "ы", "э", "ю", "я"]
for (let i = 0; i < str.length; i += 1) {
if (letters.includes(str[i].toLowerCase())) {
result = result + str[i].toUpperCase()
} else {
result = result + str[i].toLowerCase()
}
}
return result
}
После этого все работает так, как ожидалось: первая «а» в слове «Азбука Вкуса» останется в верхнем регистре.