Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Эта страница была переведена с английского языка силами сообщества. Вы тоже можете внести свой вклад, присоединившись к русскоязычному сообществу MDN Web Docs.

String

BaselineWidely available *

ОбъектString используется, чтобы представить и конструировать последовательность символов.

Синтаксис

Строковые литералы могут быть следующих форм:

'строка текста'"строка текста""中文 español English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어 தமிழ்"

Кроме регулярных печатных символов можно использовать специальные символы, которые можно закодировать, используя нотацию escape-последовательностей:

КодВывод
\0нулевой символ (символ NUL)
\'одинарная кавычка
\"двойная кавычка
\\обратный слеш
\nновая строка
\rвозврат каретки
\vвертикальная табуляция
\tтабуляция
\bзабой
\fподача страницы
\uXXXXЮникод-символ
\xXXсимвол в кодировке Latin-1

Либо можно использовать глобальный объектString напрямую:

String(thing)new String(thing)

Параметры

thing

Всё, что может быть преобразовано в строку.

Описание

Строки полезны для хранения данных, которые можно представить в текстовой форме. Некоторые из наиболее частых операций со строками — это проверка ихдлины, построение строки с помощьюопераций строковой конкатенации + и +=, проверка на существование или местоположение подстрок с помощью методаindexOf(), либо извлечение подстрок с помощью методаsubstring().

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

Существует два способа добраться до конкретного символа в строке. В первом способе используется методcharAt():

js
return "кот".charAt(1); // вернёт "о"

Другим способом (введённым в ECMAScript 5) является рассмотрение строки как массивоподобного объекта, в котором символы имеют соответствующие числовые индексы:

js
return "кот"[1]; // вернёт "о"

При доступе к символам посредством нотации с квадратными скобками, попытка удалить символ, или присвоить значение числовому свойству закончится неудачей, поскольку эти свойства являются незаписываемыми и ненастраиваемыми. Смотрите документацию по методуObject.defineProperty() для дополнительной информации.

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

Разработчики на C имеют для сравнения строк функциюstrcmp(). В JavaScript вы просто используетеоператоры меньше и больше:

js
var a = "a";var b = "b";if (a < b) {  // true  print(a + " меньше чем " + b);} else if (a > b) {  print(a + " больше чем " + b);} else {  print(a + " и " + b + " равны.");}

Подобный результат также может быть достигнут путём использования методаlocaleCompare(), имеющегося у всех экземпляровString.

Разница между строковыми примитивами и объектамиString

Обратите внимание, что JavaScript различает объектыString и значения строкового примитива (то же самое верно и для объектовBoolean иNumber).

Строковые литералы (обозначаемые двойными или одинарными кавычками) и строки, возвращённые вызовомString в неконструкторном контексте (то есть, без использования ключевого словаnew) являются строковыми примитивами. JavaScript автоматически преобразует примитивы в объектыString, так что на строковых примитивах возможно использовать методы объектаString. В контекстах, когда на примитивной строке вызывается метод или происходит поиск свойства, JavaScript автоматически оборачивает строковый примитив объектом и вызывает на нём метод или ищет в нём свойство.

js
var s_prim = "foo";var s_obj = new String(s_prim);console.log(typeof s_prim); // выведет 'string'console.log(typeof s_obj); // выведет 'object'

Строковые примитивы и объектыString также дают разные результаты при использовании глобальной функцииeval(). Примитивы, передаваемые вeval(), трактуются как исходный код; объекты жеString трактуются так же, как и все остальные объекты, а именно: возвращается сам объект. Например:

js
var s1 = "2 + 2"; // создаёт строковый примитивvar s2 = new String("2 + 2"); // создаёт объект Stringconsole.log(eval(s1)); // выведет число 4console.log(eval(s2)); // выведет строку '2 + 2'

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

ОбъектString также всегда может быть преобразован в его примитивный аналог при помощи методаvalueOf().

js
console.log(eval(s2.valueOf())); // выведет число 4

Свойства

String.length

Хранит длину строки. Только для чтения.

Методы

Общие методы объектаString

Методы экземпляровString также доступны в Firefox как часть JavaScript 1.6 (который не является частью стандарта ECMAScript) на объектеString, что позволяет применять эти методы к любому объекту:

js
var num = 15;console.log(String.replace(num, /5/, "2"));

Общие методы также доступны для объектаArray.

Следующая прослойка позволяет использовать их во всех браузерах:

js
/*globals define*/// Предполагаем, что все требуемые методы экземпляров String уже присутствуют// (для них так же можно использовать полифилы, если их нет)(function () {  "use strict";  var i,    // Мы могли построить массив методов следующим образом, однако метод    //   getOwnPropertyNames() нельзя реализовать на #"quote",      "substring",      "toLowerCase",      "toUpperCase",      "charAt",      "charCodeAt",      "indexOf",      "lastIndexOf",      "startsWith",      "endsWith",      "trim",      "trimLeft",      "trimRight",      "toLocaleLowerCase",      "toLocaleUpperCase",      "localeCompare",      "match",      "search",      "replace",      "split",      "substr",      "concat",      "slice",    ],    methodCount = methods.length,    assignStringGeneric = function (methodName) {      var method = String.prototype[methodName];      String[methodName] = function (arg1) {        return method.apply(arg1, Array.prototype.slice.call(arguments, 1));      };    };  for (i = 0; i < methodCount; i++) {    assignStringGeneric(methods[i]);  }})();

Примеры

Пример: преобразование в строку

ОбъектString можно использовать как «безопасную» альтернативу методуtoString(), так как хотя он обычно и вызывает соответствующий методtoString(), он также работает и для значенийnull иundefined. Например:

js
var outputStrings = [];for (var i = 0, n = inputValues.length; i < n; ++i) {  outputStrings.push(String(inputValues[i]));}

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-string-objects

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp