JavaScript строки (string)
- Кавычки
- Кодировка символов строки
- Длина строки
- Нумерация и доступ к символам строки
- Строки неизменяемые
- Управляющие последовательности
- Конкатенация
Тип данных строка (string) используется для представления текста. Соответственно, значениями типа string является текст. Любой текст в JavaScript является строкой.
Кавычки
Строки в JavaScript должны быть заключены в кавычки. В JavaScript существует три вида кавычек: двойные (" "
), одинарные (' '
) и обратные (` `
):
"Строка в двойных кавычках" 'Строка в одинарных кавычках' `Строка в обратных кавычках`
Вид кавычек в начале и конце строки должен совпадать.
Строки могут состоять из нуля и более символов:
'' // Пустая строка "Строка" // Не пустая строка
Строки с двойными и одинарными кавычками ничем не отличаются между собой по функционалу – они могут содержать лишь текст и управляющие последовательности. А вот строки с обратными кавычками имеют более широкий функционал. Такие строки могут содержать так называемые подстановки, обозначаемые знаком доллара и фигурными скобками ${выражение}
. Подстановки могут содержать любые произвольные выражения:
let стр = "Мир!"; let стр2 = `Привет, ${стр}`; // Использование переменной в строке alert(стр2); // Привет, Мир! alert(`2 + 3 = ${2 + 3}.`); // 2 + 3 = 5.
Выражение, расположенное в подстановке (${...}
) вычисляется, и его результат становится частью строки.
Строки в обратных кавычках могут занимать более одной строки, сохраняя все пробельные символы:
let числа = `Числа: 1 2`; alert(числа); // Числа: // 1 // 2
Строки с обратными кавычками называются строками-шаблонами или шаблонными литералами.
Строки, заключённые в одни кавычки, могут содержать другие кавычки:
"одинарные 'кавычки' и `обратные` внутри двойных" 'а здесь "так" и `так`!' `а здесь "так" и 'так'!`
Для удобства, большие строковые литералы можно разбивать на несколько строк, заканчивая каждую строку, кроме последней, символом \
:
alert("это всё одна \ длинная \ строка"); // это всё одна длинная строка alert('это всё одна \ длинная \ строка'); // это всё одна длинная строка alert(`это всё одна \ длинная \ строка`); // это всё одна длинная строка
Кодировка символов строки
Вне зависимости от того, какая кодировка установлена для страницы, в JavaScript для строк всегда используется кодировка UTF-16.
В JavaScript строка – это неизменяемая, упорядоченная последовательность 16-битных значений, каждое из которых представляет символ Unicode. Для представления символов Unicode в JavaScript используется кодировка UTF-16. Символы включают в себя буквы, цифры, знаки пунктуации, специальные символы и пробельные символы.
Длина строки
Длина строки – это количество 16-битных значений (а не самих символов), содержащихся в ней. Длину строки содержит свойство length
:
alert("Привет".length ); // 6
Символы, кодовые пункты которых не умещаются в 16 бит, обрабатываются в соответствии с правилами кодировки UTF-16 как последовательности из двух 16-битных значений. Это означает, что строка, имеющая длину, равную 2 (два 16-битных значения), на деле может представлять единственный символ:
alert("a".length); // 1 alert("𝑒".length); // 2
Нумерация и доступ к символам строки
Как уже было сказано, строка представляет собой упорядоченную последовательность 16-битных значений, каждому из которых соответствует определённый символ. Нумерация 16-битных значений в строке начинается с нуля, т. е. первое 16-битное значение находится под индексом 0, второе – под индексом 1 и т. д. Индекс – это порядковый номер.
Получить символ строки (состоящий из одного 16-битного значения) можно с помощью индекса, заключённого в квадратные скобки [индекс]
:
let стр = "Привет"; alert(стр[0]); // П alert(стр[3]); // В
Чтобы с помощью индексов обратиться к символу, состоящему из двух 16-битных значений, нужно, используя конкатенацию, написать эти индексы так, чтобы в результате получилась последовательность из двух 16-битных значений:
let стр = "𝑒"; alert(стр[0] + стр[1]); // "𝑒"
Строки неизменяемые
В JavaScript строки неизменяемые. Это значит, что в уже существующей строке нельзя менять никакие символы или добавлять в неё что-то новое.
Так как строки неизменяемые, то методы, используемые для работы со строками, возвращают новые строки, а не изменяют ту строку, относительно которой они были вызваны:
let стр = "Привет!"; alert(стр.toUpperCase()); // "HELLO" - новое возвращаемое методом значение alert(стр); // "hello" - первоначальная строка не изменена
Чтобы изменить
строку, можно создать новую строку и записать её в ту же самую переменную вместо старой строки:
let стр = "Строка"; стр = стр.toUpperCase(); alert(стр); // "СТРОКА"
Управляющие последовательности
В строковых литералах можно использовать управляющие последовательности. Управляющая последовательность – это последовательность, состоящая из обычных символов, которая обозначает символ, не представимый внутри строки другими способами. Управляющие последовательности предназначены для форматирования вывода текстового содержимого.
В таблице ниже представлены управляющие последовательности:
Последовательность | Значение |
---|---|
\0 |
Символ NUL – пустой символ ("\u0000" ). |
\t |
Горизонтальная табуляция ("\u0009" ). |
\n |
Перевод на новую строку ("\u000A" ). |
\b |
Возврат на одну позицию – то, что происходит при нажатии на клавишу backspace ("\u0008" ). |
\r |
Возврат каретки ("\u000D" ). |
\f |
Перевод страницы – очистка страницы ("\u000C" ). |
\v |
Вертикальная табуляция ("\u000B" ). |
\" |
Двойная кавычка ("\u0022" ). |
\' |
Одинарная кавычка ("\u0027" ). |
\\ |
Обратный слэш ("\u005C" ). |
\xNN |
Номер символа из набора символов ISO Latin-1, заданный двумя шестнадцатеричными цифрами (N – шестнадцатеричная цифра 0-F ). Например, "\x41" (это код буквы "A" ). |
\uNNNN |
Номер символа из набора символов Unicode, заданный четырьмя шестнадцатеричными цифрами (N – шестнадцатеричная цифра 0-F ). Например, "\u0041" (это код буквы "A"s ). |
Управляющие последовательности могут находиться в любом месте строки:
alert("Греческая буква сигма: \u03a3."); // Греческая буква сигма: Σ. alert("Многострочная\nстрока") // Многострочная // строка alert("внутри используются \"двойные\" кавычки"); // внутри используются "двойные" кавычки
Если символ \
предшествует любому символу, отличному от приведённых в таблице, то он просто игнорируется интерпретатором:
alert("\k"); // "k"
Символы Unicode, указываемые с помощью управляющей последовательности, можно использовать не только внутри строковых литералов, но и в идентификаторах:
let a\u03a3 = 5; alert(a\u03a3); // 5
Конкатенация
Конкатенация - это объединение двух или более строк в одну большую. Объединение происходит с помощью оператора + (плюс). При конкатенации каждая последующая строка добавляется в конец предыдущей:
var str1 = "Hello "; var str2 = "World!"; document.write(str1 + str2 + "<br>"); // "Hello World!" document.write(str1 + "World!");Попробовать »
Значение любого типа, которое объединяется со строкой, будет неявно (автоматически) преобразовано в строку и далее будет произведена конкатенация.
var str1 = "Hello "; alert(str1 + 1); // "Hello 1" alert(true + str1); // "trueHello" alert(str1 + NaN); // "Hello NaN"Попробовать »
С этой темой смотрят: