Для ограниченного алфавита задайте таблицу соответствий заглавных и строчных букв. Полный 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.