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():
return "кот".charAt(1); // вернёт "о"
Другим способом (введённым в ECMAScript 5) является рассмотрение строки как массивоподобного объекта, в котором символы имеют соответствующие числовые индексы:
return "кот"[1]; // вернёт "о"
При доступе к символам посредством нотации с квадратными скобками, попытка удалить символ, или присвоить значение числовому свойству закончится неудачей, поскольку эти свойства являются незаписываемыми и ненастраиваемыми. Смотрите документацию по методу Object.defineProperty() для дополнительной информации.
Сравнение строк
Разработчики на C имеют для сравнения строк функцию strcmp(). В JavaScript вы просто используете операторы меньше и больше:
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 автоматически оборачивает строковый примитив объектом и вызывает на нём метод или ищет в нём свойство.
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 трактуются так же, как и все остальные объекты, а именно: возвращается сам объект. Например:
var s1 = "2 + 2"; // создаёт строковый примитив
var s2 = new String("2 + 2"); // создаёт объект String
console.log(eval(s1)); // выведет число 4
console.log(eval(s2)); // выведет строку '2 + 2'
По этим причинам код может сломаться, если он получает объекты String, а ожидает строковые примитивы, хотя в общем случае вам не нужно беспокоиться о различиях между ними.
Объект String также всегда может быть преобразован в его примитивный аналог при помощи метода valueOf().
console.log(eval(s2.valueOf())); // выведет число 4
Свойства
String.length- 
Хранит длину строки. Только для чтения.
 
Методы
String.fromCharCode()- 
Возвращает строку, созданную из указанной последовательности значений Юникода.
 String.fromCodePoint()Экспериментальная возможность- 
Возвращает строку, созданную из указанной последовательности кодовых точек Юникода.
 String.raw()Экспериментальная возможность- 
Возвращает строку, созданную из сырой шаблонной строки.
 
Общие методы объекта String
    Методы экземпляров String также доступны в Firefox как часть JavaScript 1.6 (который не является частью стандарта ECMAScript) на объекте String, что позволяет применять эти методы к любому объекту:
var num = 15;
console.log(String.replace(num, /5/, "2"));
Общие методы также доступны для объекта Array.
Следующая прослойка позволяет использовать их во всех браузерах:
/*globals define*/
// Предполагаем, что все требуемые методы экземпляров String уже присутствуют
// (для них так же можно использовать полифилы, если их нет)
(function () {
  "use strict";
  var i,
    // Мы могли построить массив методов следующим образом, однако метод
    //   getOwnPropertyNames() нельзя реализовать на JavaScript:
    // Object.getOwnPropertyNames(String).filter(function(methodName) {
    //   return typeof String[methodName] === 'function';
    // });
    methods = [
      "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. Например:
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>  | 
            
Совместимость с браузерами
Loading…