В JavaScript строки используются для хранения и манипулирования текстом. Отдельного типа для одного символа не существует. Внутренний формат строк всегда UTF-16.
Строка представляет собой ноль или больше символов, которые записываются внутри кавычек.
О кавычках
Мы можем различать одинарные кавычки, двойные кавычки и обратные кавычки:
let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;
Двойные и одинарные кавычки равнозначны. Тем не менее, обратные кавычки отличаются. Вы можете использовать их для внедрения любого выражения в строку, обернув его в ${…}, как показано ниже:
Одним из самых важных преимуществ обратных кавычек является возможность охватить несколько строк, как это:
Но обратите внимание, что одинарные и двойные кавычки не работают в этом случае. Если вы попытаетесь использовать их для применения нескольких строк, возникнет ошибка:
let guestList = "Guests: // Error: Unexpected token ILLEGAL
* John ";
Одинарные и двойные кавычки появились раньше обратных кавычек. Таким образом, обратные кавычки более функциональны.
Вы также можете указать “функцию-шаблон” перед первой обратной кавычкой. Синтаксис будет выглядеть так:
func `string`
Как правило, функция func вызывается автоматически. Она получает как строку, так и встроенные выражения, обрабатывая их. Используя эту функцию, вы можете быстро реализовать пользовательский шаблон. Тем не менее, разработчики редко используют его на практике.
Специальные символы
Вы можете создавать многострочные строки с двойными и одинарными кавычками с помощью \n, как это:
Существуют и другие менее распространенные специальные символы.
Найдите некоторые из них в приведенном ниже списке:
- \', \" эти специальные символы используются для кавычек
- \r - возврат каретки. Этот символ сейчас используется в одиночку. Комбинация двух символов \r\n используется для представления перевода строки в текстовых файлах Windows.
- \\ - обратная косая черта
- \t - табуляция
- \xXX - символ юникода с определенным шестнадцатеричным кодом XX
- \uXXXX - это символ юникода с шестнадцатеричным кодом XXXX в кодировке UTF-16. Он должен включать ровно 4 цифры.
Вот примеры с кодами юникода:
Учтите, что все специальные символы начинаются с обратной косой черты. Он также известен как “символ экранирования”.
Вы также можете использовать его в случае, если хотите поместить кавычку в строку.
Вот пример:
Также учтите, что обратная косая черта в основном используется для корректного чтения строки JavaScript, после чего она исчезает. В памяти строки вы не найдете никакой \ . Но когда вам нужно показать настоящую обратную косую черту внутри строки, вы должны удваивать ее, как в этом примере:
Длина строки
Свойство length используется для определения длины строки:
Учтите, что \n является специальным символом. Следовательно, длина должна быть 7.
Иногда разработчики допускают ошибку при вызове этого свойства, вызывая str.length() вместо просто str.length. Это не будет работать.
Доступ к символам
Квадратные скобки[pos] в основном используются для получения символа на позиции [pos]. Вы можете сделать это, вызвав метод str.charAt(pos) также. Первый символ должен начинаться с нуля:
Современные разработчики предпочитают использовать квадратные скобки, в то время как charAt редко используется
Строки неизменны
Изменить строки в JavaScript невозможно. Посмотрите на этот пример, чтобы убедиться, что это не работает:
Общепринятая практика - создание совершенно новой строки и присвоение ее str вместо старой, как это:
Изменение регистра
Мы можем отличать два метода изменения регистра. Вот они:
В другом сценарии, если один символ должен быть в нижнем регистре, используйте этот метод:
Поиск подстроки
Давайте узнаем о способах поиска подстроки внутри строки.
str.indexOf
Это первый метод, который используется для поиска substr в str. Он начинает с определенной позиции pos и возвращает эту позицию в момент поиска совпадения или -1, если ничего не найдено.
Посмотрим на следующий пример:
str.lastIndexOf(substr, position)
Этот метод ищет с конца строки до начала. Совпадения будут перечислены в обратном порядке.
Учтите небольшую сложность с indexOf внутри теста if. Его нельзя поместить в if так:
Так что вам нужно проверить -1, как показано ниже:
Includes, startsWith, endsWith
Более современный метод str.includes(substr, pos) способен возвращать true/false в зависимости от того, есть ли substr в str.
Действуйте как в примере, если вам нужно проверить совпадение, не нуждаясь в его позиции в то же время:
Второй аргумент str.includes - это позиция, с которой вы начинаете поиск. Вот пример:
Получение подстроки
В JavaScript есть три метода получения подстроки: substring, substr и slice.
str.slice(start [, end])
Этот метод используется для возвращения части строки от start до end.
Например:
Если второй аргумент отсутствует, slice будет идти до конца, как это:
Для start/end можно также использовать отрицательные значения.
Например:
str.substring(start [, end])
Этот метод используется для возвращения части строки между start и end.
Он очень похож на slice. Наиболее заметное отличие заключается в том, что в рамках этого метода start может быть больше, чем end.
Например:
str.substr(start [, length])
Этот метод возвращает часть строки от start, с определенной длиной. Он отличается от предыдущих методов. Этот метод поможет вам указать length вместо конечной позиции.
Например:
Первый аргумент может быть отрицательным для подсчета с конца:
Сравнение строк
Важно знать, что строки следует сравнивать посимвольно в алфавитном порядке.
Также стоит учесть следующие особенности:
- Строчные буквы больше, чем прописные, как это:
Comparison in javascript stringsconsole.log('a' > 'Z'); // true
- Буквы с диакритическими знаками считаются “не в порядке”.
Например:
Теперь давайте начнем рассмотрение внутреннего представления строк в JavaScript.
В JavaScript все строки кодируются с помощью UTF-16. Это означает, что каждому из символов соответствует определенный цифровой код.
str.codePointAt(pos)
Он используется для возвращения кода для символа на позиции pos :
String.fromCodePoint(code)
Создает символ по цифровому коду:
Символы Unicode также можно добавлять по их кодам, применяя \u, за которым следует шестнадцатеричный код.
Например:
Давайте посмотрим на символы с кодами 65..220 и создадим строку из них:
Здесь вы можете заметить, что сначала идут прописные буквы, затем несколько специальных символов, и, наконец, Ö в конце вывода.
Время Викторины: Проверьте Свои Навыки!
отовы проверить свои знания? Погрузитесь в наши интерактивные викторины для более глубокого понимания и веселого способа закрепить знания.