Строки — это последовательность символов в языке JavaScript. Например:
Здесь мы задали переменную a
и присвоили ей текстовое значение lorem ipsum
, а переменной b
присвоили значение съешь ещё этих мягких французских булок, да выпей чаю
.
Кавычки
Если вы хотите задать строку, то нужно использовать одинарные или двойные кавычки. Возьмем код из предыдущего примера:
Вместо кавычек из примера можно использовать обратные кавычки. Например:
У обратных кавычек есть особенности:
- В них можно оборачивать выражение типа
${}
. - Выражения в них можно записывать на нескольких строках кода.
- В них можно задавать функцию вида func
`string`
.
Если в строке есть кавычки, то их экранируют с помощью слеша. Это делают для того, чтобы при выводе кавычки были частью строки.
В одинарных кавычках экранируют одинарные кавычки. В двойных кавычках экранируют двойные кавычки. Символ слеша \
тоже экранируется.
Например:
Спецсимволы
Спецсимволы начинаются с обратного слеша – \
. И каждый имеет свое предназначение. Рассмотрим их.
Спецсимвол | Описание |
\n | Перевод строки |
\', \" | Кавычки |
\t | Табуляция |
\xXX | Символ в Юникоде, например: \u00A9 — то же самое, что © |
\uXXXX | Символ в UTF-8, например: \u00A9 — то же самое, что © |
Длина строки length
Вы можете получить длину строки с помощью свойства length
.
Например:
Обратите внимание, что после length
нет скобок. Скобки используют при работе с числовыми значениями.
Доступ к символам
Получить символ из определенной позиции в строке можно с помощью квадратных скобок [ ]
:
Строку можно перебрать посимвольно с помощью цикла for…of
, который мы используем для перебора массива:
Строки неизменяемы
Если строку создали, то её нельзя изменить:
Чтобы изменить строку, можно создать новую строку и присоединить к ней другую строку или её часть:
Поиск подстроки
Подстрока – это часть строки. Например, в строке 'lorem ipsum'
можно найти две подстроки: 'lorem'
и 'ipsum'
, а можно найти две подстроки 'm'
.
Рассмотрим способы поиска.
Метод str.indexOf
Ищет подстроку и ее позицию. Синтаксис такой: str.indexOf(substr, pos)
. Substr
— подстрока, pos
— позиция строки.
Pos
принимает значение позиции, на которой находится подстрока или значение — 1
, если подстроки нет:
Чтобы найти все подстроки 'm'
в строке 'lorem ipsum'
, используют цикл:
Методы includes, startsWith, endsWith
Метод includes
возвращает true
, если подстрока есть и false
, если подстроки нет:
Методы startsWith
и endsWith
определяют, начинается или и заканчивается строка определённой подстрокой:
Получение подстроки
Чтобы получить подстроку, можно использовать 3 метода: substring
, substr
и slice
.
Метод substring
используют, чтобы получить подстроку. Её конец и начало определяются индексами, которые указывают в скобках.
Синтаксис такой: str.substring(start [, end])
, где start
— начальное значение строки, end
— конечное значение строки и в подстроку не включается.
Например:
В этом методе начало строки можно задать большим числом, нежели конец строки. Тогда метод сам поменяет числа местами и вернет правильное значение подстроки:
Метод substr
возвращает подстроку от начального значения — start
, до определенной длины length
. Синтаксис такой: str.substr(start, length)
. Например:
Значение start
может быть отрицательными. Тогда позиция подстроки определяется справа. Например:
Метод slice
используют как метод substring
. Начальное и конечное значение подстроки задается точно также. Синтаксис такой: str.slice(start,end)
, end
— не включается. Например:
Если последний аргумент не указан, то подстрока возвращается с указанного до последнего символа.
Когда в качестве аргументов подстроки передаются отрицательные числа, то порядок элементов строки отсчитывается справа налево:
Сравнение строк
Строки сравниваются посимвольно в алфавитном порядке. Алгоритм сравнения двух строк такой:
- Сравнить первые символы строк.
- Если первый символ первой строки больше (меньше), чем первый символ второй, то первая строка больше (меньше) второй. Сравнение завершено.
- Если первые символы равны, сравниваем вторые символы строк.
- Сравнение продолжается, пока не закончится одна из строк.
- Если обе строки заканчиваются одновременно, то они равны. Иначе большей считается более длинная строка.
Например:
Сравнение 'Я'
> 'А'
завершится на первом шаге.
Строки 'Коты'
и 'Кода'
будут сравниваться посимвольно:
'К'
равна'К'
.'о'
равна'о'
.'т'
больше, чем'д'
.
Сравнение заканчивается. Первая строка больше.
В некоторых случаях удобно сравнивать не посимвольно, а в кодировке UTF-8. Для этого используют метод codePointAt
. Синтаксис такой: str.codePointAt(pos)
. Например, символы 'A'
и 'a'
будут иметь разное значение в UTF-8.
Метод fromCodePoint
создает символ по его коду. Синтаксис такой: String.fromCodePoint(code)
. Например:
Правильное сравнение
При правильном сравнении можно сравнивать строки из разных языков. Например: 'Österreich'
— немецкий языки 'Zealand'
— английский язык.
Для этого используют метод localeCompare
. Этот метод возвращает:
- Отрицательное число, если
str1
меньшеstr2
. - Положительное число, если
str1
большеstr2
. 0
, если строки равны.
Например:
Как всё устроено, Юникод
Суррогатные пары
Буквы в европейских языках представлены в виде 2-х байтовых символов. Всего в таком виде можно представить 65536 комбинаций символов. Поэтому редкие символы кодируются не одним символом, а парой символов. Помните, что смайлик мы можем сделать с помощью двух символов: двоеточия и скобки? :)
Такие символы называют суррогатной парой и их длина равна 2
.
Например:
Суррогатные пары можно обнаружить по их кодам. В диапазоне 0xd800..0xdbff
— можно обнаружить первый символ, в диапазоне 0xdc00..0xdfff
— второй символ.
Например:
Диакритические знаки и нормализация
В некоторых языках: немецком, шведском, венгерском, турецком есть диакритические символы. Например буква `a`
служит основой для диакритических символов àáâäãåā
.
Чтобы работать с диакритическими знаками в языке JavaScript, используют специальные символы. Например, чтобы добавить сверху буквы `a`
точку, используют символ \u0307
.
Чтобы сравнить диакритические знаки используют метод normalize()
. Синтаксис такой: str.normalize()
:
Если этот метод не использовать, то при сравнении одинаковых символов мы увидим false
:
Нестандартные методы объекта String
Метод anchor
Создает закладку с name
и заключает ее в теги <a>...</a>
:
Метод big
Заключает строку в теги <big>...</big>
:
Метод blink
Заключает строку в теги <blink>…</blink>
. Строка между этими тегами мигает. Метод поддерживается браузерами Netscape и WebTV. Например:
Метод bold
Заключает строку в теги <b>…</b>
. Шрифт строки между ними становится жирным:
Метод charAt
Метод возвращает какой-либо символ строки из указанной позиции:
Метод charCodeAt
Метод возвращает код Юникода в определенной позиции:
Метод concat
Метод соединяет строки:
Метод fixed
Метод заключает строку в теги <tt>…</tt>
. Эти теги отображают строку телетайпным шрифтом:
Метод fontcolor
Метод помещает строку в тег <font color=цвет>…</font>
и окрасит ее в любой цвет:
Метод fontsize
Метод помещает строку в тег <font size=`размер`>…</font>
и задаст ее размер:
Метод fromCharCode
Метод создает новую строку из символов по коду из Юникод:
Метод indexOf
Метод возвращает первую позицию подстроки:
Метод italics
Метод помещает строку в теги <i>...</i>
:
Метод lastIndexOf
Метод возвращает позицию указанной подстроки:
Метод link
Метод помещает строку в теги <a href="uri">…</a>
. Строка становится ссылкой:
Метод localeCompare
Метод сравнивает две строки и возвращает:
-1
— строка меньше,1
— строка больше,0
— строки равны.
Например:
Метод match
Метод сопоставляет строковое значение и значение метода. Возвращает совпадение строки и значение, которое указано в скобках:
Метод replace
Метод сопоставляет выражение строки и меняет его на указанное:
Метод search
Сопоставляет выражение в скобках и строку. В результате получается позиция первого элемента подстроки:
Метод small
Метод помещает строку в теги <small>...</small>
:
Метод strike
Метод помещает строку в теги <strike>...</strike>
:
Метод split
Метод разбивает строку на массив подстрок с помощью указанного разделителя:
В скобках метода указывается разделитель и количество знаков, которые нужно вывести при разделении:
Метод sub
Метод заключает строку в теги <sub>...</sub>
:
Метод sup
Метод заключает строку в теги <sup>...</sup>
:
Метод toLocaleLowerCase
Метод возвращает строчные буквы:
Метод toLocaleUpperCase
Метод возвращает прописные буквы:
Метод toLowerCase
Метод заменяет все буквы исходной строки на строчные:
Метод toString
Метод возвращает исходное значение строки:
Метод toUpperCase
Метод меняет символы строки на прописные:
Метод valueOf
Метод возвращает значение строки:
В этой статье мы:
- узнали, как задавать строку и искать в подстроках;
- как работать с Юникодом и что такое суррогатные пары;
- познакомились с основными и нестандартными методами для работы со строками.
Комментарии