Строка (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() | Отображает строку в виде надстрочного текста |