Тип данных String в JavaScript

В этом руководстве вы узнаете о типе JavaScript String и о том, как эффективно манипулировать строками.

Тип данных является оболочкой объекта примитивного типа string и может быть создан с помощью конструктора следующим образом:

let str = new String('JavaScript String Type');

Тип String имеет свойство length, которое определяет количество символов в строке.

console.log(str.length);
 // 22

В этом примере значение свойства length равно 22, что также является количеством символов в строке ‘JavaScript String Type’.

Чтобы получить значение примитивной строки, вы используете один из следующих методов объекта String: valueOf(), toString(), и toLocaleString().

console.log(str.valueOf());
console.log(str.toString());
console.log(str.toLocaleString());

Чтобы получить доступ к отдельному символу в строке, используйте нотацию с квадратными скобками [] с числовым индексом. Индекс первого символа равен нулю, как показано в этом примере:

console.log(str[0]);
 // J

Обозначение квадратных скобок было введено в ES5. До ES5 использовали метод charAt(), который является более подробным:

console.log(str.charAt(0));
 // J

Когда вы вызываете метод для примитивной строковой переменной или литеральной строки, он преобразуется в экземпляр типа String. Например:

'literal string'.toUpperCase();

Эта функция известна как примитивные типы-оболочки в JavaScript.

Манипуляции со строками

Тип String предоставляет множество полезных методов для эффективного управления строками. Мы рассмотрим каждый из них в следующем разделе.

1) Объединение строк

Чтобы объединить две или более строки, используйте метод concat() следующим образом:

let firstName = 'John';
let fullName = firstName.concat(' ','Doe');
console.log(fullName); // "John Doe"
console.log(firstName); // "John"

Метод concat() объединяет две или более строк и возвращает результирующую строку. Обратите внимание, что метод concat() не изменяет исходную строку.

Помимо метода concat(), вы также можете использовать оператор сложения( + ) для объединения строк. На практике оператор сложения используется чаще, чем метод concat().

let firstName = 'John';
let fullName = firstName + ' ' + 'Doe';
console.log(fullName); // "John Doe"

2) Извлечение подстрок

Чтобы извлечь подстроку из строки, вы используете метод substr() :

substr(startIndex,[length]);

Метод substr() принимает два аргумента.

Первый аргумент startIndex — это местоположение, в котором извлекаются символы, а length второго аргумента указывает количество символов для извлечения.

let str = "JavaScript String";

console.log(str.substr(0, 10)); // "JavaScript"
console.log(str.substr(11,6)); // "String"

Если вы опустите аргумент length, метод substr() извлечет символы в конец строки.

Иногда вы хотите извлечь подстроку из строки, используя начальный и конечный индексы. В этом случае вы используете метод substring() :

substring(startIndex,endIndex)

Пример:

let str = "JavaScript String";
console.log(str.substring(4, 10)); // "Script"

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

Чтобы найти подстроку в строке, используйте метод indexOf():

string.indexOf(substring,[fromIndex]);

Метод indexOf() принимает два аргумента: подстроку для поиска и fromIndex, с которого метод начинает поиск в строке вперед.

indexOf() возвращает индекс первого вхождения подстроки в строку. Если подстрока не найдена, метод indexOf() возвращает -1.

let str = "This is a string";
console.log(str.indexOf("is")); // 2

В следующем примере используется аргумент fromIndex :

console.log(str.indexOf('is', 3));
 //5

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

string.lastIndexOf(substring,[fromIndex])

В отличие от indexOf(), метод lastindexOf() выполняет поиск в обратном направлении от аргумента fromIndex.

console.log(str.lastIndexOf('is'));
 // 5

Метод lastIndexOf() также возвращает -1, если подстрока не найдена в строке, как показано в этом примере:

console.log(str.lastIndexOf('are'));
 // -1

4) Удаление пробельных символов

Чтобы удалить все начальные и конечные пробельные символы строки, используйте метод trim().

let rawString = ' Hi  ';
let strippedString = rawString.trim();
console.log(strippedString); // "Hi"

Обратите внимание, что метод trim() создает копию исходной строки с удаленными пробелами, он не изменяет исходную строку.

ES6 представил два новых метода удаления пробельных символов из строки:

  • trimStart() возвращает строку с удаленными пробелами в начале строки.
  • trimEnd() возвращает строку с удаленным пробелом в конце строки.

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

Чтобы изменить регистр строки, используйте toLowerCase() и toUpperCase() :

let greeting = 'Hello';
console.log(greeting.toLowerCase()); // 'hello'
console.log(greeting.toUpperCase()); // 'HELLO';

В некоторых языках правила преобразования строки в нижний и верхний регистр очень специфичны.

Поэтому безопаснее использовать toLocaleLowerCase() и toLocaleUpperCase(), особенно если вы не знаете, с каким языком будет работать код.

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

Чтобы сравнить две строки, используйте метод localeCompare() :

first.localeCompare(second);

localeCompare() возвращает одно из трех значений: -1, 0 и 1.

  • Если первая строка идет перед второй строкой в алфавитном порядке, метод возвращает -1.
  • Если первая строка идет после второй строки в алфавитном порядке, метод возвращает 1.
  • Если две строки равны, метод возвращает 0.

Например:

console.log('A'.localeCompare('B')); // -1
console.log('B'.localeCompare('B')); // 0
console.log('C'.localeCompare('B')); // 1

7) Сопоставление шаблонов

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

Метод match() возвращает null, если совпадений не найдено. В противном случае он возвращает массив, содержащий полное совпадение и все совпадающие результаты захвата скобок.

Если глобальный флаг( g ) не установлен, нулевой элемент массива содержит все совпадение. Вот пример:

let expression = '1 + 2 = 3';
let matches = expression.match(/\d+/);
console.log(matches[0]); // "1"

Выход:

1

В этом примере шаблон соответствует любому числу в строке expression.

В случае, если глобальный флаг( g ) установлен, элементы результирующего массива содержат все совпадения следующим образом:

let expression = '1 + 2 = 3';
let matches = expression.match(/\d+/g);

for(const match of matches) {
  console.log(match);
}

Выход:

1
2
3

В этом примере массив matches содержит все совпадения, включая 1, 2 и 3 в строке expression.

Если вам нужно только узнать, соответствует ли строка регулярному выражению, используйте вместо этого метод search().

Подобно методу match(), метод search() принимает регулярное выражение и возвращает позицию строки, в которой найдено первое совпадение. Если совпадений не найдено, возвращается -1.

let str = "This is a test of search()";
let pos = str.search(/is/);
console.log(pos); // 2

8) Замена подстрок

Чтобы заменить подстроку в строке, используйте метод replace().

string.replace(regularExpression, replaceText)

Первым аргументом метода replace() может быть регулярное выражение или строка. Если это регулярное выражение, метод найдет совпадения и заменит их вторым аргументом( replaceText ). Если это строка, метод выполнит точный поиск и внесет замену.

replace() возвращает копию исходной строки после замены.

В следующем примере показано, как использовать регулярное выражение для a the :

let str = "the baby kicks the ball";

// replace "the" with "a"
let newStr = str.replace(/the/g, "a");

console.log(newStr); // "a baby kicks a ball"
console.log(str); // "the baby kicks the ball"

А в следующем примере показано, как заменить kicks на holds, используя первый аргумент в виде буквальной строки.

newStr = str.replace('kicks', 'holds');
console.log(newStr); // "the baby holds the ball"
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript