Методы строк
В уроке про строки вы уже познакомились с length, toUpperCase(), slice() и trim(). Здесь — следующие по полезности методы: они ищут позицию фрагмента, выравнивают текст и разбивают его на части. Все методы строк возвращают новую строку и не меняют исходную.
Позиция фрагмента
indexOf() возвращает позицию, с которой начинается фрагмент, или -1, если его нет. Позиции, как и индексы массива, считаются с нуля:
const email = 'anna@example.com';
console.log(email.indexOf('@')); // 4lastIndexOf() ищет последнее вхождение. Вместе со slice() это позволяет вырезать часть строки до или после найденного места:
const email = 'anna@example.com';
const at = email.indexOf('@');
console.log(email.slice(0, at)); // anna
console.log(email.slice(at + 1)); // example.comОтдельные символы
Символ строки читают по индексу в квадратных скобках или методом at(), который понимает отрицательные номера:
const word = 'JavaScript';
console.log(word[0]); // J
console.log(word.at(-1)); // tДополнение до длины
padStart() дописывает символы в начало строки, пока она не достигнет нужной длины, а padEnd() — в конец. Так выравнивают номера и колонки:
console.log('7'.padStart(3, '0')); // 007
console.log('5'.padStart(2, '0') + ':30'); // 05:30Повтор строки
repeat() повторяет строку указанное число раз — удобно для разделителей и простых рисунков из символов:
console.log('-'.repeat(10)); // ----------
console.log('★'.repeat(3) + '☆'.repeat(2)); // ★★★☆☆Разбиение и склейка
split() разбивает строку на массив по разделителю, а метод массива join() склеивает его обратно. Между ними можно обработать каждый кусок методами массивов:
const sentence = 'учить javascript каждый день';
const title = sentence
.split(' ')
.map((word) => word[0].toUpperCase() + word.slice(1))
.join(' ');
console.log(title); // Учить Javascript Каждый ДеньМетоды можно вызывать цепочкой: каждый следующий работает с результатом предыдущего.
Частая ошибка
Сравнение строк учитывает регистр, поэтому 'Анна' и 'анна' считаются разными. Перед сравнением пользовательского ввода приведите обе строки к одному виду:
const input = ' Анна ';
console.log(input === 'анна'); // false
console.log(input.trim().toLowerCase() === 'анна'); // true