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