Самописная функция преобразования строки в нижний регистр

Для ограниченного алфавита задайте таблицу соответствий заглавных и строчных букв. Полный Unicode нельзя корректно реализовать одним сдвигом кодов: нужны таблицы и контекстные правила.

Короткий ответ

Что ответить на собеседовании

Для ограниченного алфавита задайте таблицу соответствий заглавных и строчных букв. Полный Unicode нельзя корректно реализовать одним сдвигом кодов: нужны таблицы и контекстные правила.

Подробный разбор

Ответ с пояснениями

Условие

Реализовать собственную версию функции, которая переводит все символы строки в нижний регистр, без использования готовых методов языка.

Ответ

Для ограниченного алфавита задайте таблицу соответствий заглавных и строчных букв. Полный Unicode нельзя корректно реализовать одним сдвигом кодов: нужны таблицы и контекстные правила.

Учебный вариант для латиницы ASCII и русского алфавита, без готового преобразования регистра:

function lower(text) {
  const upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  const lower = 'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
  let result = '';
  for (const char of text) {
    let replacement = char;
    for (let i = 0; i < upper.length; i++) {
      if (upper[i] === char) { replacement = lower[i]; break; }
    }
    result += replacement;
  }
  return result;
}

Это не универсальная замена toLowerCase: остальные алфавиты остаются неизменными. Для полной реализации используют UnicodeData и SpecialCasing; некоторые буквы превращаются в несколько кодовых точек, а результат может зависеть от контекста или локали.

Источник: www.unicode.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее