Строка – это последовательность из одного или больше символов, которая может состоять из букв, цифр и других символов. Каждый символ в строке JavaScript имеет свой индекс. Все строки имеют доступные им методы и свойства.
В этом мануале вы узнаете, как индексируются строки, как обращаться к символам в строке, а также об общих свойствах и методах строк.
Строковые примитивы и объекты String
В JavaScript существует два типа строк. JavaScript различает строковый примитив (неизменный тип данных) и объект String.
Чтобы понять разницу между ними, инициализируйте строковый примитив и объект String.
// Initializing a new string primitive
const stringPrimitive = "A new string.";
// Initializing a new String object
const stringObject = new String("A new string.");
Оператор typeof позволяет определить тип значения. В первом случае строка была просто присвоена переменной.
typeof stringPrimitive;
string
Во втором случае с помощью new String() был создан объект и присвоен переменной.
typeof stringObject;
object
В основном используются примитивы строк. JavaScript может использовать встроенные свойства и методы оболочки объекта String, не изменяя строковый примитив в объекте.
Вы должны знать различие между примитивами и объектами, хотя сначала понять ее сложно. По сути, существуют методы и свойства, доступные для всех строк, и в фоновом режиме 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 |
Первый символ строки получает индекс 0, последний символ (?) имеет индекс 11. Пробелы также индексируются (3 и 7 в данном случае).
Возможность доступа к каждому символу в строке открывает несколько способов работы со строками.
Доступ к символам
Рассмотрим эту функцию на примере строки:
"How are you?";
С помощью квадратных скобок можно получить доступ к любому символу в строке.
"How are you?"[5];
r
Также запросить символ по индексу можно с помощью метода charAt(). Номер индекса передается в качестве параметра.
"How are you?".charAt(5);
r
Чтобы узнать индекс того или иного символа в строке, передайте его в качестве параметра методу indexOf().
"How are you?".indexOf("o");
1
Хотя символ о появляется в строке дважды, метод возвращает индекс первого экземпляра.
lastIndexOf() выдает индекс последнего экземпляра запрашиваемого символа.
"How are you?".lastIndexOf("o");
9
Оба эти метода могут искать несколько символов в строке. Метод вернет индекс первого символа этой последовательности.
"How are you?".indexOf("are");
4
Метод slice() возвращает символы между двумя заданными номерами индексов. Первым параметром будет номер первого индекса, а второй параметр будет номером последнего индекса.
"How are you?".slice(8, 11);
you
Обратите внимание: 11 – индекс символа «?», который не появился в результате. Дело в том, что slice() выводит первый параметр включительно, а второй – исключительно.
Если второй параметр не указан, этот метод выведет все символы после указанного индекса.
"How are you?".slice(8);
you?
Итак, charAt () и slice ()возвращают строковые значения по индексу, а indexOf () и lastIndexOf () – наоборот, возвращают индекс по символу.
Длина строки
Свойство length возвращает количество символов в строке.
"How are you?".length;
12
Помните, что свойство length возвращает фактическое количество символов, начиная отсчет с 1, а не с 0, как при индексации.
Преобразование регистра
Встроенные методы toUpperCase() и toLowerCase()позволяют форматировать текст в JavaScript.
Метод toUpperCase() преобразует все символы в верхний регистр.
"How are you?".toUpperCase();
HOW ARE YOU?
Метод toLowerCase() преобразует все символы в символы нижнего регистра.
"How are you?".toLowerCase();
how are you?
Они не принимают дополнительных параметров.
Стоит отметить, что эти методы не меняют исходную строку.
Разделение строк
В JavaScript есть очень полезный метод для разделения строки символом и создания новых массивов из полученных разделов. Используйте метод split() для разделения массива символом пробела.
const originalString = "How are you?";
// Split string by whitespace character
const splitString = originalString.split(" ");
console.log(splitString);
[ 'How', 'are', 'you?' ]
У вас есть новый массив в переменной splitString, и теперь вы можете получить доступ к каждой секции по индексу.
splitString[1];
are
Без параметров split () создаст массив, разделенный запятыми, поместив каждый символ в строку.
Этот метод позволяет посчитать слова в предложении. Также с его помощью программа может отличить имя от фамилии.
Удаление крайних пробелов
Метод trim() удаляет крайние пробелы в строках.
const tooMuchWhitespace = " How are you? ";
const trimmed = tooMuchWhitespace.trim();
console.log(trimmed);
How are you?
С помощью метода trim() можно быстро удалить избыточные пробелы в начале и конце строки.
Поиск и замена значений строки
Найти значение в строке и заменить его новым значением можно с помощью метода replace(). Первым параметром будет искомое значение, а вторым – значение, на которое нужно его заменить.
const originalString = "How are you?"
// Replace the first instance of "How" with "Where"
const newString = originalString.replace("How", "Where");
console.log(newString);
Where are you?
Этот метод можно комбинировать с регулярными выражениями. К примеру, replace() работает с первым найденным экземпляром искомого значения. Флаг g (global) позволит методу работать со всеми экземплярами в строке, а флаг i отключает чувствительность к регистру.
const originalString = "Javascript is a programming language. I'm learning javascript."
// Search string for "javascript" and replace with "JavaScript"
const newString = originalString.replace(/javascript/gi, "JavaScript");
console.log(newString);
JavaScript is a programming language. I'm learning JavaScript.
Читайте также:
Заключение
Строки – самый распространенный тип данных. Они поддерживают много функций.
Теперь вы знаете разницу между строковыми примитивами и объектами String, понимаете, как индексируются строки и как применять встроенные методы для работы с ними.
Читайте также: Работа со строками в JavaScript