Строки и объект String

Oбъект String имеет большой набор свойств и методов, с помощью которых мы можем манипулировать строками.

Свойство length указывает на длину строки:

var hello = "привет мир";
console.log("В строке '" + hello + "' " + hello.length + " символов");
Метод repeat() позволяет создать строку путем многократного повторения другой строки. Количество повторов передается в качестве аргумента:
let hello = "hello ";
console.log(hello.repeat(3));	// hello hello hello

Шаблоны строк

Шаблоны строк позволяют вставлять в строку различные значения. Для этого строки заключаются в косые кавычки:

let name = "Tom";
let hello = `Hello ${name}`;
console.log(hello);		// Hello Tom

let age = 23;
let info = `${name} is ${age} years old`;
console.log(info);		// Tom is 23 years old
Для вставки значения в строку оно заключается в фигурные скобки, перед которыми ставится знак доллара.

Также вместо скалярных значений могут добавляться свойства сложных объектов или результаты выражений:
let tom ={
	name: "Tom",
	age: 25
}
let info = `${tom.name} is ${tom.age} years old`;
console.log(info);	// Tom is 23 years old

function sum(x, y){
	return x + y;
}
let a = 5, b = 4;
let result = `${a} + ${b} = ${sum(a, b)}`;
console.log(result);	// 5 + 4 = 9

Поиск в строке

Для поиска в строки некоторой подстроки используются методы indexOf() (индекс первого вхождения подстроки) и lastIndexOf() (индекс последнего вхождения подстроки). Эти методы принимают два параметра:

Оба этих метода возвращают индекс символа, с которого в строке начинается подстрока. Если подстрока не найдена, то возвращается число -1.
let hello = "привет мир. пока мир";
let key = "мир";
let firstPos = hello.indexOf(key);
let lastPos = hello.lastIndexOf(key);
console.log("Первое вхождение: ", firstPos);	// 7
console.log("Последнее вхождение: ", lastPos);	// 17
Еще один метод - includes() возвращает true, если строка содержит определенную подстроку.
let hello = "привет мир. пока мир";

console.log(hello.includes("мир"));	// true
console.log(hello.includes("миг"));	// false
С помощью второго дополнительного параметра можно определить индекс, с которого будет начинаться поиск подстроки:
let hello = "привет мир. пока мир";

console.log(hello.includes("мир", 5));	// true
console.log(hello.includes("привет", 6));	// false

Выбор подстроки

Для того, чтобы вырезать из строки подстроку, применяются методы substr() и substring().

Метод substring() принимает два параметра:

let hello = "привет мир. пока мир";
let world = hello.substring(7, 10); // с 7-го по 10-й индекс
console.log(world); // мир
Метод substr() также в качестве первого параметра принимает начальный индекс подстроки, а в качестве второго - длину вырезаемой подстроки:
let hello = "привет мир. пока мир";
let bye = hello.substr(12, 4);
console.log(bye); // пока
Если второй параметр не указывается, то обрезается вся остальная часть строки:
let hello = "привет мир. пока мир";
let bye = hello.substr(12);
console.log(bye); // пока мир

Управление регистром

Для изменения регистра имеются методы toLowerCase() (для перевода в нижний регистр) и toUpperCase() (для перевода в верхний регистр).

let hello = "Привет Том";
console.log(hello.toLowerCase()); // привет том
console.log(hello.toUpperCase()); // ПРИВЕТ ТОМ

Получение символа по индексу

Чтобы получить определенный символ в строке по индексу, можно применять методы charAt() и charCodeAt(). Оба этих метода в качестве параметра принимают индекс символа:

let hello = "Привет Том";
console.log(hello.charAt(2)); 		// и
console.log(hello.charCodeAt(2)); 	// 1080
Но если в качестве результата метод charAt() возвращает сам символ, то метод charCodeAt() возвращает числовой код этого символа.

Удаление пробелов

Для удаления начальных и концевых пробелов в стоке используется метод trim():

let hello = "   Привет Том  ";
let beforeLength = hello.length;
hello = hello.trim();
let afterLength = hello.length;
console.log("Длина строки до: ", beforeLength); 	// 15
console.log("Длина строки после: ", afterLength); 	// 10

Объединение строк

Метод concat() объединяет две строки:

let hello = "Привет ";
let world = "мир";
hello = hello.concat(world);
console.log(hello); // Привет мир

Замена подстроки

Метод replace() заменяет первое вхождение одной подстроки на другую:

let hello = "Добрый день";
hello = hello.replace("день", "вечер");
console.log(hello); // Добрый вечер
Первый параметр метода указывает, какую подстроку надо заменить, а второй параметр - на какую подстроку надо заменить.

Разделение строки

Метод split() разбивает строку на массив подстрок по определенному разделителю. В качестве разделителя используется строка, которая передается в метод:

var message = "Сегодня была прекрасная погода";
var stringArray = message.split(" ");
for(var str in stringArray)
	console.log(stringArray[str]);
	
Вывод браузера

Сегодня
была
прекрасная
погода

Проверка начала и окончания строки

Метод startsWith() возвращает true, если строка начинается с определенной подстроки. А метод endsWith() возвращает true, если строка оканчивается на определенную подстроку.

let hello = "let me speak from my heart";
console.log(hello.startsWith("let"));		// true
console.log(hello.startsWith("Let"));		// false
console.log(hello.startsWith("lets"));		// false

console.log(hello.endsWith("heart"));		// true
console.log(hello.startsWith("bart"));		// false
При этом играет роль регистр символов,

Дополнительный второй параметр позволяет указать индекс (для startsWith - индекс с начала, а для endsWith - индекс с конца строки), относительно которого будет производиться сравнение:
let hello = "let me speak from my heart";
console.log(hello.startsWith("me", 4));		// true, "me" - 4 индекс с начала строки

console.log(hello.startsWith("my", hello.length-8));	// true, "my" - 8 индекс с конца
Output