Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Методы строк

В уроке про строки вы уже познакомились с length, toUpperCase(), slice() и trim(). Здесь — следующие по полезности методы: они ищут позицию фрагмента, выравнивают текст и разбивают его на части. Все методы строк возвращают новую строку и не меняют исходную.

Позиция фрагмента

indexOf() возвращает позицию, с которой начинается фрагмент, или -1, если его нет. Позиции, как и индексы массива, считаются с нуля:

const email = 'anna@example.com';
 
console.log(email.indexOf('@')); // 4

lastIndexOf() ищет последнее вхождение. Вместе со 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

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.