Урок 4 из 8 · 20 мин · обновлено
Строки и их методы
Три вида кавычек и шаблонные строки, обращение к символам, длина строки и самые нужные методы: trim, toLowerCase, includes, slice, replace и split.
Три вида кавычек
Строку можно записать в одинарных, двойных или обратных кавычках:
const a = 'Привет';
const b = "Привет";
const c = `Привет`;
Одинарные и двойные работают одинаково. А обратные кавычки создают шаблонную строку — в неё можно подставлять значения через ${...}:
const name = "Анна";
const total = 1250;
console.log(`${name}, ваш заказ на ${total} ₽ принят`);
console.log(`Со скидкой: ${total * 0.9} ₽`);
Внутри ${...} можно писать любое выражение: переменную, расчёт, вызов функции. Шаблонные строки читаются гораздо проще, чем склейка через плюс, поэтому в современном коде их используют постоянно.
Символы и длина
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) — последние четыре символа.
Строки неизменяемы
Ни один метод не меняет исходную строку — он возвращает новую. Поэтому результат сохраняют:
let name = " анна ";
name.trim(); // результат потерян, name не изменилась
name = name.trim(); // теперь name === "анна"
Методы удобно вызывать цепочкой:
const email = " Anna@Mail.RU ";
const clean = email.trim().toLowerCase();
console.log(clean); // "anna@mail.ru"
Пример из жизни: маскировка номера
На сайтах часто показывают номер телефона не целиком:
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 — корректна.
Решение
const raw = " Ivan.Petrov@Mail.RU ";
const email = raw.trim().toLowerCase();
if (email.includes("@")) {
console.log(`Почта ${email} — корректна`);
} else {
console.log("В адресе нет @");
}
Проверка на @ — упрощённая: настоящая проверка адреса сложнее. Но так или иначе почти любая форма на сайте начинает с очистки введённых данных.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Как подставить значение переменной name в строку?
Подстановка ${...} работает только в обратных кавычках. В обычных кавычках запись останется текстом как есть.
-
Что вернёт 'JavaScript'.length?
length — это свойство, а не метод, поэтому пишется без скобок. В слове JavaScript 10 символов.
-
const email = ' Anna@Mail.ru '. Что вернёт email.trim().toLowerCase()?
trim() убирает пробелы по краям, toLowerCase() переводит в нижний регистр. Методы вызываются цепочкой: каждый работает с результатом предыдущего.
-
Что вернёт '+79161234567'.slice(-4)?
Отрицательный индекс в slice() отсчитывается с конца: slice(-4) берёт последние четыре символа.