Методы преобразования строки

Методы преобразования строки

Технический фундамент преобразования строк

Преобразование строки — это последовательность чистых операций, где каждый шаг возвращает новое значение.
Обычно это конвейер нормализации: очистка, приведение регистра, форматирование.

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), когда вход может быть разным.

Микро-сценарии

  1. Нормализация имени пользователя при логине.
function normalizeLogin(login) {
  return login.trim().toLowerCase();
}
  1. Подготовка 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) безопасно приводит значение к строке.
  • Нормализация строки почти всегда нужна перед поиском и сравнением.
  • Преобразование не меняет исходную строку, а создает новую.