Решаем задачу на JavaScript: преобразование строк

Решаем задачу на 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
  }

После этого все работает так, как ожидалось: первая «а» в слове «Азбука Вкуса» останется в верхнем регистре.