Строки

1. Введение

Строка — это индексированный набор из нуля или более символов, заключенных в одинарные либо двойные кавычки.

const name = 'Mango';

Важно помнить, что индексация элементов строки начинается с нуля. К примеру в строке 'JavaScript' буква 'J' стоит на позиции с индексом 0, а 't' идет под индексом 9.

Содержимое строки нельзя изменить. Нельзя взять символ посередине и заменить его. Как только строка создана — она такая навсегда. Можно лишь создать целиком новую строку и присвоить в переменную вместо старой.

2. Конкатенация строк

Если применить оператор + к строке и любому другому типу данных, результатом операции «сложения» будет строка. Эта операция называется конкатенация, или сложение строк.

Во время конкатенации, любой тип данных приводится к строке и сшивается со строкой, но есть особенность — последовательность записи операндов.

Последовательность операций имеет значение, преобразование типов происходит только в момент операции сложения со строкой, до этого момента действуют привычные правила математики.

const message = 'Mango ' + 'is' + ' happy';
console.log(message); // Mango is happy

// Теперь посмотрим на порядок операндов
let result;

result = 5 + '5';
console.log(result); // '55'
console.log(typeof result); // string

result = 5 + '5' + 5;
console.log(result); // '555'
console.log(typeof result); // string

/*
 * Обратите внимание, произошла математическая операция
 * сложения для первых двух пятерок, после чего 10 было
 * преобразовано в строку '10' и сшито с '5'
 */
result = 5 + 5 + '5';
console.log(result); // '105'
console.log(typeof result); // string

3. Свойства и методы строк

У каждой строки есть встроенные свойства и методы, рассмотрим некоторые из них.

  • length - свойство, хранит длину строки

  • toLowerCase() и toUpperCase() - вернут новую строку в соответствующем регистре, не изменяют оригинальную строку

  • indexOf() - вернет позицию (индекс) на которой находится первое совпадение подстроки или -1, если ничего не найдено

  • includes() - один из наиболее часто используемых методов, в большинстве случаев заменяет indexOf, проверяет входит ли подстрока в строку, возвращает true или false

const message = 'Welcome to Bahamas!';

console.log(message.length); // 19
console.log('There is nothing impossible to him who will try'.length); // 47

console.log(message.toLowerCase()); // welcome to bahamas!
console.log(message.toUpperCase()); // WELCOME TO BAHAMAS!

// При этом исходная строка не изменяется
console.log(message); // Welcome to Bahamas!

console.log(message.indexOf('to')); // 8
console.log(message.indexOf('hello')); // -1

// Все методы строк чувствительны к регистру
console.log(message.includes('welcome')); // false
console.log(message.includes('Welcome')); // true

Полный список методов на MDN

4. Шаблонные строки и интерполяция

Шаблонные строки - это альтернатива конкатенации с более удобным синтаксисом. Они заключены в обратные кавычки вместо двойных или одинарных и могут содержать местозаполнители, которые обозначаются знаком доллара и фигурными скобками.

// Используя переменные необходимо составить строку с подставленными значениями
const name = 'Mango';
const age = 2;
const mood = 'happy';

const message =
  'My name is ' + name + ", I'm " + age + ' years old and ' + mood + '.';

console.log(message); // My name is Mango, I'm 2 years old and happy.

/*
 * Составлять строки с подставляемыми значениями
 * используя конкатенацию очень неудобно.
 * На помощь приходят шаблонные строки и интерполяция.
 */
const sameMessage = `My name is ${name}, I'm ${age} years old and ${mood}.`;

console.log(sameMessage); // My name is Mango, I'm 2 years old and happy.

// В интерполяции можно использовать любое валидное выражение
console.log(`Результат сложения равен ${2 + 2}.`); // Результат сложения равен 4.

Last updated