Методы преобразования строки
Методы преобразования строки
Технический фундамент преобразования строк
Преобразование строки — это последовательность чистых операций, где каждый шаг возвращает новое значение.
Обычно это конвейер нормализации: очистка, приведение регистра, форматирование.
const raw = ' Admin ';
const normalized = raw.trim().toLowerCase();
console.log(raw); // ' Admin '
console.log(normalized); // 'admin'
Ключевая идея: мы не "чиняем строку внутри", а получаем новую нормализованную версию для сравнения и хранения.
Регистр: toLowerCase и toUpperCase
toLowerCase() делает строку в нижнем регистре, toUpperCase() — в верхнем.
const role = 'Admin';
console.log(role.toLowerCase()); // admin
console.log(role.toUpperCase()); // ADMIN
Это особенно важно для поиска и сравнения пользовательского ввода.
function hasRole(inputRole) {
return inputRole.toLowerCase() === 'admin';
}
Проверь себя: почему сравнение без toLowerCase() может случайно отклонить правильный ввод?
Очистка пробелов: trim, trimStart, trimEnd
Пользователь часто вводит строку с пробелами в начале или конце. trim() убирает их по краям.
const email = ' user@mail.com ';
console.log(email.trim()); // 'user@mail.com'
Если нужно удалить пробелы только слева или справа:
console.log(' hello'.trimStart()); // 'hello'
console.log('hello '.trimEnd()); // 'hello'
Анти-провал: trim не удаляет пробелы в середине строки.
console.log('hello world'.trim()); // 'hello world'
Преобразование к строке: String(...) и .toString()
Иногда данные приходят числом/булевым типом, но для UI нужно текстовое значение.
const price = 1990;
const inStock = true;
console.log(String(price)); // '1990'
console.log(String(inStock)); // 'true'
.toString() тоже работает, но не для null и undefined.
console.log((42).toString()); // '42'
// console.log(null.toString()); // ошибка
Практичнее использовать String(value), когда вход может быть разным.
Микро-сценарии
- Нормализация имени пользователя при логине.
function normalizeLogin(login) {
return login.trim().toLowerCase();
}
- Подготовка slug для URL.
function toSlug(title) {
return title
.trim()
.toLowerCase()
.replaceAll(' ', '-');
}
console.log(toSlug(' JavaScript Basics ')); // javascript-basics
Смотри, что важно: replaceAll(' ', '-') заменяет только обычный пробел. Если в строке могут быть табы/переносы строк или несколько пробелов подряд, часто используют регулярное выражение:
function toSlug2(title) {
return title.trim().toLowerCase().replace(/\s+/g, '-');
}
Что будет, если изменить вход
console.log(' ADMIN '.trim().toLowerCase()); // admin
console.log('ADMIN'.toLowerCase()); // admin
console.log(' ADMIN '.toLowerCase()); // ' admin '
Если не применить trim, сравнение с 'admin' может провалиться из-за пробела.
Типичные ошибки
- Забывать нормализовать строку до сравнения.
- Думать, что
trimубирает все пробелы в любом месте. - Использовать
.toString()на потенциальноnull/undefined. - Смешивать строковые и числовые операции после преобразования.
Краткий итог
toLowerCase/toUpperCaseприводят к единому регистру.trim,trimStart,trimEndочищают пробелы по краям.String(value)безопасно приводит значение к строке.- Нормализация строки почти всегда нужна перед поиском и сравнением.
- Преобразование не меняет исходную строку, а создает новую.