Строка — это индексированный набор из нуля или более символов, заключенных в одинарные либо двойные кавычки.
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
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.