Строки в JavaScript

В JavaScript строки используются для хранения и манипулирования текстом. Отдельного типа для одного символа не существует. Внутренний формат строк всегда UTF-16.

Строка представляет собой ноль или больше символов, которые записываются внутри кавычек.

О кавычках

Мы можем различать одинарные кавычки, двойные кавычки и обратные кавычки:

let single = 'single-quoted';
let double = "double-quoted"; 
let backticks = `backticks`;

Двойные и одинарные кавычки равнозначны. Тем не менее, обратные кавычки отличаются. Вы можете использовать их для внедрения любого выражения в строку, обернув его в ${…}, как показано ниже:

Strings in javascript
let str = "W3Docs"; console.log(`Welcome to ${str}`); // Welcome to W3Docs

Одним из самых важных преимуществ обратных кавычек является возможность охватить несколько строк, как это:

Strings in javascript
let languagesList = `Languages: * Javascript * Php * Java `; console.log(languagesList); // a list of languages, multiple lines

Но обратите внимание, что одинарные и двойные кавычки не работают в этом случае. Если вы попытаетесь использовать их для применения нескольких строк, возникнет ошибка:

let guestList = "Guests: // Error: Unexpected token ILLEGAL 
* John ";

Одинарные и двойные кавычки появились раньше обратных кавычек. Таким образом, обратные кавычки более функциональны.

Вы также можете указать “функцию-шаблон” перед первой обратной кавычкой. Синтаксис будет выглядеть так:

func `string`

Как правило, функция func вызывается автоматически. Она получает как строку, так и встроенные выражения, обрабатывая их. Используя эту функцию, вы можете быстро реализовать пользовательский шаблон. Тем не менее, разработчики редко используют его на практике.

Специальные символы

Вы можете создавать многострочные строки с двойными и одинарными кавычками с помощью \n, как это:

Strings in javascript
let languagesList = "Languages:\n * Javascript\n * Php\n * Java"; console.log(languagesList); // a multiline list of languages

Существуют и другие менее распространенные специальные символы.

Найдите некоторые из них в приведенном ниже списке:

  • \', \" эти специальные символы используются для кавычек
  • \r - возврат каретки. Этот символ сейчас используется в одиночку. Комбинация двух символов \r\n используется для представления перевода строки в текстовых файлах Windows.
  • \\ - обратная косая черта
  • \t - табуляция
  • \xXX - символ юникода с определенным шестнадцатеричным кодом XX
  • \uXXXX - это символ юникода с шестнадцатеричным кодом XXXX в кодировке UTF-16. Он должен включать ровно 4 цифры.

Вот примеры с кодами юникода:

Unicode strings in javascript
console.log("\u00E9"); // é console.log("\u{03BB}"); // λ

Учтите, что все специальные символы начинаются с обратной косой черты. Он также известен как “символ экранирования”.

Вы также можете использовать его в случае, если хотите поместить кавычку в строку.

Вот пример:

Strings in javascript
console.log('This\'s the W3Docs site!'); // This’s the W3Docs site

Также учтите, что обратная косая черта в основном используется для корректного чтения строки JavaScript, после чего она исчезает. В памяти строки вы не найдете никакой \ . Но когда вам нужно показать настоящую обратную косую черту внутри строки, вы должны удваивать ее, как в этом примере:

Strings in javascript
console.log(`The backslash: \\`); // The backslash: \ let backslash = "aa ///\\"; // This is correct // let backslash = "aa ///\"; // This is not. console.log(backslash);

Длина строки

Свойство length используется для определения длины строки:

Strings length in javascript
console.log(`W3Docs\n`.length); // 7

Учтите, что \n является специальным символом. Следовательно, длина должна быть 7.

Иногда разработчики допускают ошибку при вызове этого свойства, вызывая str.length() вместо просто str.length. Это не будет работать.

Доступ к символам

Квадратные скобки[pos] в основном используются для получения символа на позиции [pos]. Вы можете сделать это, вызвав метод str.charAt(pos) также. Первый символ должен начинаться с нуля:

Character at a position strings in javascript
let str = `Welcome`; // the first character console.log(str[0]); // W console.log(str.charAt(0)); // W // the last character console.log(str[str.length - 1]); // e

Современные разработчики предпочитают использовать квадратные скобки, в то время как charAt редко используется

Строки неизменны

Изменить строки в JavaScript невозможно. Посмотрите на этот пример, чтобы убедиться, что это не работает:

Change character at a position strings in javascript
let str = 'Welcome'; str[0] = 'w'; console.log(str[0]);

Общепринятая практика - создание совершенно новой строки и присвоение ее str вместо старой, как это:

Character at a position strings in javascript
let str = 'Hi'; str = 'h' + str[1]; // replace the string console.log(str); // hi

Изменение регистра

Мы можем отличать два метода изменения регистра. Вот они:

toUpperCase change strings in javascript
console.log('Welcome to W3Docs'.toUpperCase()); // WELCOME TO W3DOCS console.log('Welcome to W3Docs'.toLowerCase()); // welcome to w3docs

В другом сценарии, если один символ должен быть в нижнем регистре, используйте этот метод:

toLowerCase change strings in javascript
console.log('Welcome to W3Docs' [0].toLowerCase()); // 'w'

Поиск подстроки

Давайте узнаем о способах поиска подстроки внутри строки.

str.indexOf

Это первый метод, который используется для поиска substr в str. Он начинает с определенной позиции pos и возвращает эту позицию в момент поиска совпадения или -1, если ничего не найдено.

Посмотрим на следующий пример:

Index strings in javascript
let str = 'Welcome to W3Docs'; console.log(str.indexOf('Welcome')); // 0, because 'Welcome' is found at the beginning console.log(str.indexOf('welcome')); // -1, not found, the search is case-sensitive console.log(str.indexOf("W3Docs")); // 11, "W3Docs" is found at the position 11

str.lastIndexOf(substr, position)

Этот метод ищет с конца строки до начала. Совпадения будут перечислены в обратном порядке.

Учтите небольшую сложность с indexOf внутри теста if. Его нельзя поместить в if так:

Index strings in javascript
let str = "Welcome to W3Docs"; if (str.indexOf("Welcome")) { console.log("Thank you"); // doesn't work! }

Так что вам нужно проверить -1, как показано ниже:

Index strings in javascript
let str = "Welcome to W3Docs"; if (str.indexOf("Welcome") != -1) { console.log("Thank you"); // works now }

Includes, startsWith, endsWith

Более современный метод str.includes(substr, pos) способен возвращать true/false в зависимости от того, есть ли substr в str.

Действуйте как в примере, если вам нужно проверить совпадение, не нуждаясь в его позиции в то же время:

Includes strings in javascript
console.log("Welcome to W3Docs".includes("Welcome")); // true console.log("Hi".includes("Bye")); // false

Второй аргумент str.includes - это позиция, с которой вы начинаете поиск. Вот пример:

Includes strings in javascript
console.log("Welcome".includes("come")); // true console.log("Welcome".includes("come", 5)); // false, from position 5 there is no "come"

Получение подстроки

В JavaScript есть три метода получения подстроки: substring, substr и slice.

str.slice(start [, end])

Этот метод используется для возвращения части строки от start до end.

Например:

The slice method in javascript strings
let str = "welcome"; console.log(str.slice(0, 6)); // 'welcom', the substring from 0 to 6 (not including 6) console.log(str.slice(0, 1)); // 'w', from 0 to 1, but not including 1, so only character at 0

Если второй аргумент отсутствует, slice будет идти до конца, как это:

Slice in javascript strings
let str = "welcome"; console.log(str.slice(3)); // 'come', from the 3-position till the end

Для start/end можно также использовать отрицательные значения.

Например:

The slice in javascript strings
let str = "welcome "; // start at the 5th position from the right, end at the 1st from the right console.log(str.slice(-5, -1)); // 'come'

str.substring(start [, end])

Этот метод используется для возвращения части строки между start и end.

Он очень похож на slice. Наиболее заметное отличие заключается в том, что в рамках этого метода start может быть больше, чем end.

Например:

The substring in javascript strings
let str = "welcome"; // these are same for substring console.log(str.substring(3, 6)); // "com" console.log(str.substring(6, 3)); // "com" // ...but not for slice: console.log(str.slice(3, 6)); // "com" (the same) console.log(str.slice(6, 3)); // "" (an empty string)

str.substr(start [, length])

Этот метод возвращает часть строки от start, с определенной длиной. Он отличается от предыдущих методов. Этот метод поможет вам указать length вместо конечной позиции.

Например:

The substr in javascript strings
let str = "welcome"; console.log(str.substr(3, 4)); // 'come', from the 3-position get 4 characters

Первый аргумент может быть отрицательным для подсчета с конца:

The substr in javascript strings
let str = "welcome"; console.log(str.substr(-4, 2)); // 'co', from the 4th position get 2 characters

Сравнение строк

Важно знать, что строки следует сравнивать посимвольно в алфавитном порядке.

Также стоит учесть следующие особенности:

  1. Строчные буквы больше, чем прописные, как это:
    Comparison in javascript strings
    console.log('a' > 'Z'); // true
  2. Буквы с диакритическими знаками считаются “не в порядке”.

Например:

Comparison in javascript strings
console.log('Germany' > 'England'); // true

Теперь давайте начнем рассмотрение внутреннего представления строк в JavaScript.

В JavaScript все строки кодируются с помощью UTF-16. Это означает, что каждому из символов соответствует определенный цифровой код.

str.codePointAt(pos)

Он используется для возвращения кода для символа на позиции pos :

Return the code for the character at position javascript string
// different case letters have different codes console.log("w".codePointAt(0)); // 119 console.log("W".codePointAt(0)); // 87

String.fromCodePoint(code)

Создает символ по цифровому коду:

Character's numeric code javascript string
console.log(String.fromCodePoint(80)); // P

Символы Unicode также можно добавлять по их кодам, применяя \u, за которым следует шестнадцатеричный код.

Например:

Unicode characters javascript string
// 90 is 5a in hexadecimal system console.log('\u005a'); // Z

Давайте посмотрим на символы с кодами 65..220 и создадим строку из них:

Unicode characters javascript string
let str = ''; for (let i = 65; i <= 220; i++) { str += String.fromCodePoint(i); } console.log(str); // ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„ // ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁ ÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜ

Здесь вы можете заметить, что сначала идут прописные буквы, затем несколько специальных символов, и, наконец, Ö в конце вывода.

Время Викторины: Проверьте Свои Навыки!

отовы проверить свои знания? Погрузитесь в наши интерактивные викторины для более глубокого понимания и веселого способа закрепить знания.

Считаете ли это полезным?