String

String

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

Строки в прикладном коде почти всегда требуют нормализации и аккуратной работы с вводом:

  • обрезка пробелов (trim) перед проверками и сохранением;
  • единый регистр для сравнений (toLowerCase/toUpperCase);
  • явное преобразование типов перед склейкой/сравнением (строка и число ведут себя по-разному);
  • помнить, что строки неизменяемы: методы возвращают новую строку.

Такая дисциплина снижает баги в поиске, валидации форм и отображении UI-текста.

Почему строки важнее, чем кажется

В реальном приложении текстовые данные встречаются везде: имена пользователей, email, URL, поисковые запросы, статусы, сообщения интерфейса. Ошибки в строковой обработке часто приводят к кривой валидации, неправильному поиску и плохому UX.

Ключевой момент: строка в JavaScript это последовательность символов, и большинство операций с вводом пользователя начинается именно с нее.

Проверь себя: почему ' User@Mail.Com ' почти всегда нужно нормализовать перед проверкой?

Создание и базовые операции

const firstName = 'Anna';
const lastName = 'Lee';
const fullName = firstName + ' ' + lastName;

console.log(fullName);

Также удобно использовать шаблонные строки.

const message = `Привет, ${fullName}!`;

Смотри, что важно: операции со строками не меняют исходную строку, а возвращают новую.

Длина, поиск, извлечение

const text = 'JavaScript';

console.log(text.length); // 10
console.log(text.includes('Script')); // true
console.log(text.slice(0, 4)); // Java

Это базовые инструменты для фильтрации, валидации и отображения.

Нормализация ввода

Перед сравнениями часто нужны trim() и приведение регистра.

const rawEmail = '  USER@MAIL.COM  ';
const normalizedEmail = rawEmail.trim().toLowerCase();

console.log(normalizedEmail); // user@mail.com

Здесь часто путаются: строка из пробелов (' ') после trim() станет пустой строкой.

Проверь себя: почему сравнивать email без trim() и toLowerCase() рискованно?

Частый edge case: строка и число

console.log('10' + 5); // '105'
console.log(Number('10') + 5); // 15

Если ожидаешь арифметику, строку нужно явно преобразовать.

Мини-сценарий: приветствие пользователя

function buildGreeting(rawName) {
  const name = rawName.trim();
  if (name === '') return 'Привет, гость!';
  return `Привет, ${name}!`;
}

Такой подход защищает от пустого ввода и "визуально пустых" имен из пробелов.

Частые ошибки новичков

  • Забывать, что строковые методы возвращают новую строку.
  • Сравнивать сырой ввод без нормализации.
  • Путать slice и substring в крайних индексах.
  • Не учитывать пустую строку и строку из пробелов как разные состояния до trim().

Анти-провал: на входе от пользователя делай минимум: trim + проверка пустоты + нужное преобразование регистра.

Что будет, если изменить вход

Для buildGreeting:

  • 'Anna' -> персональное приветствие;
  • ' Anna ' -> тоже персональное;
  • ' ' -> Привет, гость!.

Это предсказуемая строковая логика без скрытых условий.

Проверь себя: почему ' ' без trim() может случайно пройти проверку "не пусто"?

Краткий итог

  • string используется почти во всех пользовательских сценариях.
  • Строки неизменяемы: методы возвращают новые значения.
  • Нормализация (trim, регистр) обязательна для корректных сравнений.
  • Явное преобразование типов нужно при смешении строк и чисел.
  • Надежная строковая обработка снижает баги в форме, поиске и отображении данных.