Как индексировать, разбивать и манипулировать строками в JavaScript

Введение

Строка – это последовательность одного или более символов, которые могут состоять из букв, цифр или иных знаков. Каждый символ в строке JavaScript доступен по номеру индекса.

В данной статье мы изучим разницу между примитивным строковым типом и объектом String. А также узнаем, как индексируются строки, как приобрести доступ к символам строки, основные свойства и способы строк.

Примитивные строковые типы и String Objects

Для начала мы проясним различие между двумя типами строк. JavaScript различает примитивную строку(неизменяемый тип) и объект String.

Чтобы понять различия между ними, инициализируем примитивную строку и объект-строку.

// Инициализируемпримитивнуюстрокуconst stringPrimitive = "A new string.";// ИнициализируемString Objectsconst stringObject = newString("A new string."); 

Можно легко использовать оператор typeof, чтобы определить тип значения. В первом примере мы присвоили переменной строковое значение.

typeof stringPrimitive;Выводstring

Во втором примере мы использовали конструктор new String(), чтобы создать объект-строку и присвоить его переменной.

typeof stringObject;Выводobject

В большинстве случаев вы будете создавать примитивные строки. JavaScript может использовать свойства и способы объекта String без явного приведения примитивной строки к object.

Способы и свойства String Objects доступны для всех строк. Но JavaScript осуществляет конвертацию строки в объект и обратно каждый раз, когда вызывается способ или свойство.

Как индексируются строки

Каждый символ строки соответствует индексу, начиная с 0. Чтобы это продемонстрировать, создадим строку со значением How are you?

H o w a r e y o u ?
0 1 2 3 4 5 6 7 8 9 10 11

Первый символ строки –H, который соответствует индексу 0. Последний символ –? соответствует индексу 11. Символы пробелов имеют индексы 3 и 7.

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

Продемонстрируем, как приобрести доступ к символам и индексам строки How are you?

"How are you?";

Используя квадратные скобки, можно приобрести доступ к любому символу строки.

"How are you?"[5];Выводr

Мы также можем использовать способ charAt(), чтобы вернуть символ, передавая индекс в виде параметры.

"Howareyou?".charAt(5);Выводr

Также можно без труда использовать indexOf(), чтобы вернуть индекс первого вхождения символа в строке.

"How are you?".indexOf("o");Вывод1

Несмотря на то, что символ «o» появляется в строке How are you? дважды, indexOf() вернёт позицию первого вхождения.

lastIndexOf() используется, чтобы найти последнее вхождение.

"How are you?".lastIndexOf("o");Вывод9

Оба способа также можно без проблем использовать для поиска нескольких символов в строке. Они вернут индекс первого символа.

"How are you?".indexOf("are");Вывод4

А вот способ slice() вернёт символы между двумя индексами.

"How are you?".slice(8, 11);Выводyou

Обратите внимание на то, что 11– это?, но? не входит в результирующую строку. slice() вернёт всё, что между указанными значениями индекса. Если второй настройка опускается, slice() вернёт всё, начиная от первого параметры до конца строки.

"How are you?".slice(8);Выводyou?

Способы charAt() и slice() помогут приобрести строковые значения на основании индекса. А indexOf() и lastIndexOf() делают противоположное, возвращая индексы на основании переданной им строки.

Нахождение длины строки

Используя свойство length, можно без проблем приобрести число символов в строке.

"How are you?".length;Вывод12

Помните, что свойство length возвращает реальное число символов, начиная с 1. Вы получите результат 12, а не значение индекса последнего символа, который считается с 0.

Преобразование в верхний или нижний регистр

Встроенные способы toUpperCase() и toLowerCase() используются для форматирования текста и сравнения строковых значений.

toUpperCase() преобразует все символы в верхний регистр.

"How are you?".toUpperCase();ВыводHOW ARE YOU?

toLowerCase() преобразует все символы в нижний регистр.

"Howareyou?".toLowerCase();Выводhowareyou?

Данные способы форматирования не имеют настроек.Также важно, что они не изменяют оригинальную строку.

Разбиение строк

JavaScript предлагает способ для разбиения строк по символу и создания нового массива из полученных частей. Мы используем способ split(), чтобы разбить строку на массив по символу пробела, который представлен строкой » «.

constoriginalString = "How are you?";// Разбиваемстрокупопробелуconst splitString = originalString.split(" ");console.log(splitString);Отображение[ 'How', 'are', 'you?' ]

Сейчас, когда у нас есть новый массив в переменной splitString, можно легко приобрести доступ к каждой его части по индексу.

splitString[1];Выводare

Если способу split() передана пустая строка, он создаст массив из всех отдельных символов строки. С помощью разбиения строк можно легко определить число слов в предложении.

Отсечение пробелов

Способ trim() в JavaScript убирает пробелы с обоих концов строки, но не внутри неё. Под пробелами понимаются как обычные пробелы, так и символы табуляции.

consttooMuchWhitespace = " How are you? ";const trimmed = tooMuchWhitespace.trim();console.log(trimmed);ВыводHow are you?

Способ trim() – это простой метод избавиться от лишних пробелов.

Поиски замена строковых значений

При помощи способа replace() можно легко осуществлять поиск строки и её замену новым значением. В виде первого параметры способу следует передать значение для поиска, а вторым – значения для замены.

constoriginalString = "How are you?"// Заменяем первое вхождение строки "How" на "Where"constnewString = originalString.replace("How", "Where");console.log(newString);ВыводWhere are you?

Также можно без проблем использовать регулярные выражения. Например, способ replace() затрагивает только первое вхождение искомой строки. Но мы можем использовать флаг g(глобальный), чтобы найти все вхождения, и флаг i(независимый от регистра), чтобы игнорировать регистр.

constoriginalString = "Javascript is a programming language. I'm learning javascript."// Ищемвсевхождениястроки"javascript" изаменяемеёна"JavaScript"constnewString = originalString.replace(/javascript/gi, "JavaScript");console.log(newString);ВыводJavaScript is a programming language. I'm learning JavaScript.

Заключение

В данной статье мы изучили различие между примитивными строками и объектом String. А также узнали, как индексируются строки и как использовать способы и свойства JavaScript для доступа к символам строки, форматирования текста, поиска и замены значений в строках.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *