Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. String

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

String

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

* Some parts of this feature may have varying levels of support.

Объект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.fromCharCode()

Возвращает строку, созданную из указанной последовательности значений Юникода.

String.fromCodePoint()Экспериментальная возможность

Возвращает строку, созданную из указанной последовательности кодовых точек Юникода.

String.raw()Экспериментальная возможность

Возвращает строку, созданную из сырой шаблонной строки.

Общие методы объекта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