Урок 4 из 8 · 20 мин · обновлено

Строки и их методы

Три вида кавычек и шаблонные строки, обращение к символам, длина строки и самые нужные методы: trim, toLowerCase, includes, slice, replace и split.

Три вида кавычек

Строку можно записать в одинарных, двойных или обратных кавычках:

JavaScript
const a = 'Привет';
const b = "Привет";
const c = `Привет`;

Одинарные и двойные работают одинаково. А обратные кавычки создают шаблонную строку — в неё можно подставлять значения через ${...}:

JavaScript
const name = "Анна";
const total = 1250;

console.log(`${name}, ваш заказ на ${total} ₽ принят`);
console.log(`Со скидкой: ${total * 0.9} ₽`);

Внутри ${...} можно писать любое выражение: переменную, расчёт, вызов функции. Шаблонные строки читаются гораздо проще, чем склейка через плюс, поэтому в современном коде их используют постоянно.

Символы и длина

JavaScript
const word = "JavaScript";

console.log(word[0]);       // "J" — нумерация с нуля
console.log(word.at(-1));   // "t" — последний символ
console.log(word.length);   // 10

length — это свойство, а не метод, поэтому пишется без скобок.

Самые нужные методы

Метод — функция, которая вызывается у значения через точку. У строк их десятки, но для начала хватит этих:

Метод Что делает Пример Результат
trim() убирает пробелы по краям " да ".trim() "да"
toLowerCase() в нижний регистр "Да".toLowerCase() "да"
toUpperCase() в верхний регистр "да".toUpperCase() "ДА"
includes() есть ли подстрока "почта@mail.ru".includes("@") true
startsWith() начинается ли с "+7916".startsWith("+7") true
slice(a, b) вырезает кусок "Москва".slice(0, 3) "Мос"
replaceAll() заменяет все вхождения "8-916-123".replaceAll("-", "") "8916123"
split() режет строку на массив "a,b,c".split(",") ["a", "b", "c"]

В slice() конец не входит, а отрицательный индекс отсчитывается с конца: slice(-4) — последние четыре символа.

Строки неизменяемы

Ни один метод не меняет исходную строку — он возвращает новую. Поэтому результат сохраняют:

JavaScript
let name = "  анна  ";
name.trim();          // результат потерян, name не изменилась
name = name.trim();   // теперь name === "анна"

Методы удобно вызывать цепочкой:

JavaScript
const email = "  Anna@Mail.RU ";
const clean = email.trim().toLowerCase();
console.log(clean);   // "anna@mail.ru"

Пример из жизни: маскировка номера

На сайтах часто показывают номер телефона не целиком:

JavaScript
const phone = "+79161234567";
const masked = `${phone.slice(0, 2)} *** ***-${phone.slice(-4)}`;
console.log(masked);   // "+7 *** ***-4567"

Попробуйте сами. Пользователь ввёл адрес почты с лишними пробелами и заглавными буквами: const raw = " Ivan.Petrov@Mail.RU ". Приведите его к нижнему регистру без пробелов и проверьте, что в нём есть символ @. Выведите: Почта ivan.petrov@mail.ru — корректна.

Решение
JavaScript
const raw = "  Ivan.Petrov@Mail.RU  ";
const email = raw.trim().toLowerCase();

if (email.includes("@")) {
  console.log(`Почта ${email} — корректна`);
} else {
  console.log("В адресе нет @");
}

Проверка на @ — упрощённая: настоящая проверка адреса сложнее. Но так или иначе почти любая форма на сайте начинает с очистки введённых данных.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Как подставить значение переменной name в строку?

  2. Что вернёт 'JavaScript'.length?

  3. const email = ' Anna@Mail.ru '. Что вернёт email.trim().toLowerCase()?

  4. Что вернёт '+79161234567'.slice(-4)?