Присоединяйтесь к новому бесплатному курсу по Angular: "Список пользователей"
Курс проходит в мессенджере (Telegram, Viber). В конце курса - сессия живого разбора кода. Регистрация по ссылке.

Строка (String)

Строка (String)

Строка JavaScript хранит ряд символов, таких как “John Snow”.
Строкой может быть любой текст внутри двойных или одинарных кавычек.

var houseName = "Stark";
var houseName = 'Targaryen';

Индексы строк основаны на нулевом значении: первый символ находится на позиции 0, второй на позиции 1 и т.д.

Вы можете использовать кавычки внутри строки, если они не соответствуют кавычкам строки.

var reply = "It's OK";
var reply = "She is called 'Khaleesi'";
var reply = 'She is called "Khaleesi"';

Специальные символы

Поскольку строки должны быть написаны внутри кавычек, JavaScript неправильно поймет эту строку:

var text = "We are the so-called "Wolves" from the north."

Строка будет сокращена до «We are the so-called».

Решение данной проблемы заключается в экранирование специальных символов с использованием escape-символа\.
Escape-символ\(обратный слэш) преобразует специальные символы в строковые символы:

var reply = 'It\'s OK';
var text = "We are the so-called \"Wolves\" from the north."

Вот наиболее часто используемые специальные символы, которые могут быть вставлены в текст с помощью экранирования:

Код Результат
\’ Одиночная кавычка
Двойная кавычка
\\ Обратный слэш

 

В JavaScript действуют пять других escape-символов:

Код Результат
\b Backspace
\r Carriage Return (возврат каретки)
\f Form Feed (разделитель, разрыв страницы)
\t Horizontal Tabulator
\v Vertical Tabulator

5 вышепредставленных escape-символов первоначально были предназначены для управления пишущими машинами, телетайпами и факсимильными аппаратами. Они не имеют никакого смысла в HTML.

Разрыв длинных строк кода

Для лучшей читаемости кода, программисты стараются избегать строк кода длиной более 80 символов.
Если JavaScript выражение не помещается в одну строку, лучшее место для разрыва строки — после оператора:

document.getElementById("demo").innerHTML =
"You Know Nothing, Jon Snow";

Вы также можете разбить строку кода в текстовой строке с помощью одного обратного слэша:

document.getElementById("demo").innerHTML = "You Know Nothing, \
Jon Snow";

Метод, с использованием \ , не является предпочтительным. Возможно, у него не будет универсальной поддержки. Некоторые браузеры не допускают пробелы за символом \ .

Более безопасный способ разбить строку — использовать добавление строк:

document.getElementById("demo").innerHTML = "You Know Nothing" + 
"Jon Snow";

Вы не можете разбить строку кода с помощью обратного слэша:

document.getElementById("demo").innerHTML = \ 
"You Know Nothing, Jon Snow";

Строки могут быть объектами

Обычно строки JavaScript являются примитивными значениями, созданными из литералов:

var firstVar = "Cersei";

Но строки также могут быть определены как объекты с ключевым словом new:

var firstVar = "Cersei";
var secondVar = new String("Cersei");

// typeof firstVar вернет string
// typeof secondVar вернет object

Не создавайте строки как объекты. Это замедляет скорость выполнения.
Ключевое слово new усложняет код и может привести к неожиданным результатам:

При использовании оператора == равные строки — равны:

var firstVar = "Cersei";             
var secondVar = new String("Cersei");

// (firstVar == secondVar) вернет true потому что firstVar и secondVar имеют равные значения

При использовании оператора === равные строки не равны, потому что оператор “===” ожидает равенства как по типу, так и по значению.

var firstVar = "Cersei";             
var secondVar = new String("Cersei");

// (firstVar === secondVar) вернет false, потому что firstVar и secondVar имеют разные типы (строка и объект)

Или еще хуже. Объекты нельзя сравнивать:

var firstVar = "Cersei";             
var secondVar = new String("Cersei");

// (firstVar == secondVar) вернет false, потому что firstVar и secondVar разные объекты
var firstVar = "Cersei";             
var secondVar = new String("Cersei");

// (firstVar === secondVar) вернет false, потому что firstVar и secondVar разные объекты

Обратите внимание на разницу между
(firstVar == secondVar) и (firstVar === secondVar).
Сравнение двух объектов JavaScript всегда будет возвращать false.

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

Примитивные значения, такие как “Jon Snow”, не могут иметь свойств или методов (потому что они не являются объектами).
Но с JavaScript, методы и свойства доступны для примитивных значений, поскольку JavaScript обрабатывает примитивные значения как объекты при выполнении методов и свойств.

Свойства строк

Свойство Описание
constructor Возвращает функцию конструктор строки
length Возвращает длину строки
prototype Позволяет добавлять свойства и методы к объекту

Методы строк

Метод Описание
charAt() Возвращает символ в указанном индексе (позиции)
charCodeAt() Возвращает Unicode символа по указанному индексу
concat() Объединяет две или более строк и возвращает новую, объединенную строку
endsWith() Проверяет, заканчивается ли строка указанным символом/строкой
fromCharCode() Преобразует значения Unicode в символы
includes() Проверяет, содержит ли строка указанные символы/строку
indexOf() Возвращает позицию первого найденного вхождения указанного значения в строку
lastIndexOf() Возвращает позицию последнего найденного вхождения указанного значения в строку
localeCompare() Сравнивает две строки в текущей локали
match() Ищет строку для соответствия регулярному выражению и возвращает совпадения
repeat() Возвращает новую строку с указанным количеством копий существующей строки
replace() Ищет строку для указанного значения, или регулярного выражения, и возвращает новую строку, в которой указанные значения заменены
search() Ищет строку для указанного значения, или регулярного выражения, и возвращает позицию совпадения
slice() Извлекает часть строки и возвращает новую строку
split() Разделяет строку в массив подстрок
startsWith() Проверяет, начинается ли строка указанными символами
substr() Извлекает символы из строки, начиная с заданной начальной позиции и на указанное число символов
substring() Извлекает символы из строки, между двумя указанными индексами
toLocaleLowerCase() Преобразует строку в строчные буквы, в соответствии с локалей хоста
toLocaleUpperCase() Преобразует строку в прописные буквы, в соответствии с локалей хоста
toLowerCase() Преобразует строку в строчные буквы
toString() Возвращает значение объекта String
toUpperCase() Преобразует строку в прописные буквы
trim() Удаляет пробелы с обеих концов строки
valueOf() Возвращает примитивное значение объекта String

Все методы строк возвращают новое значение. Они не меняют исходную переменную.

Методы создания HTML-тегов для строк

Данные методы возвращают строку обернутую в соответствующий HTML-тег.

Это не стандартные методы и могут работать не так, как ожидалось, во всех браузерах.

Метод Описание
anchor() Создает якорь
big() Отображает строку с использованием большого шрифта
blink() Отображает мигающую строку (больше не поддерживается браузерами)
bold() Отображает строку жирным шрифтом
fixed() Отображает строку как текст телетайпа
fontcolor() Отображает строку с использованием указанного цвета
fontsize() Отображает строку с указанным размером
italics() Отображает строку курсивом
link() Отображает строку как гиперссылку
small() Отображает строку с использованием небольшого шрифта
strike() Отображает строку с зачеркиванием
sub() Отображает строку в виде подстрочного  текста
sup() Отображает строку в виде надстрочного текста