mozilla
Your Search Results

    String

    Сводка

    Глобальный объект 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
    Всё, что может быть преобразовано в строку.

    Description

    Строки полезны для хранения данных, которые можно представить в текстовой форме. Некоторые из наиболее частых операций со строками — это проверка их длины, построение строки с помощью операций строковой конкатенации + и +=, проверка на существование или местоположение подстрок с помощью метода 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
    
    Примечание: для того, чтобы узнать больше о другом возможном подходе к строкам в JavaScript, прочитайте статью о StringView — C-подобном представлении строк на основе типизирванных массивов.

    Свойства

    Справку по свойствам, доступным на экземплярах String, смотрите в разделе Свойства экземпляров String.
    String.prototype
    Позволяет добавлять свойства к объекту String.
    Свойства, унаследованные из Function:

    Методы

    Справку по методам, доступным на экземплярах String, смотрите в разделе Методы экземпляров String.
    String.fromCharCode()
    Возвращает строку, созданную из указанной последовательности значений Юникода.
    String.fromCodePoint()
    Возвращает строку, созданную из указанной последовательности кодовых точек Юникода.
    String.raw()
    Возвращает строку, созданную из сырой шаблонной строки.
    Методы, унаследованные из Function:

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

    Свойства

    String.prototype.constructor
    Определяет функцию, создающую прототип этого объекта.
    String.prototype.length
    Отражает длину строки.
    N
    Используется для доступа к символу в позиции N, где N — это целое число между 0 и длиной строки length минус один. Эти свойства доступны только для чтения.

    Методы

    Методы, не относящиеся к HTML

    String.prototype.charAt()
    Возвращает символ по указанному индексу.
    String.prototype.charCodeAt()
    Возвращает число, представляющее значение символа в Юникоде по указанному индексу.
    String.prototype.codePointAt()
    Возвращает неотрицательное целое число, представляющее закодированную в UTF-16 кодовую точку значения по указанной позиции.
    String.prototype.concat()
    Объединяет текст двух строк и возвращает новую строку.
    String.prototype.contains()
    Определяет, находится ли строка внутри другой строки.
    String.prototype.endsWith()
    Определяет, заканчивается ли строка символами другой строки.
    String.prototype.indexOf()
    Возвращает индекс первого вхождения указанного значения в объекте String, на котором был вызван этот метод, или -1, если вхождений нет.
    String.prototype.lastIndexOf()
    Возвращает индекс последнего вхождения указанного значения в объекте String, на котором был вызван этот метод, или -1, если вхождений нет.
    String.prototype.localeCompare()
    Возвращает число, указывающее, находится ли образцовая строка до, после или на том же самом месте, что и указанная строка в порядке сортировки.
    String.prototype.match()
    Используется для сопоставления строке регулярного выражения.
    String.prototype.normalize()
    Возвращает форму нормализации Юникода для строкового значения.
    String.prototype.quote()
    Оборачивает строку в двойные кавычки (""").
    String.prototype.repeat()
    Возвращает строку. состоящую из элементов объекта, повторённых указанное количество раз.
    String.prototype.replace()
    Используется для сопоставления строке регулярного выражения и для замены совпавшей подстроки на новую подстроку.
    String.prototype.search()
    Выполняет поиск совпадения регулярного выражжения со строкой.
    String.prototype.slice()
    Извлекает часть строки и возвращает новую строку.
    String.prototype.split()
    Разбивает объект String на массив строк, разделёных указанной строкой на подстроки.
    String.prototype.startsWith()
    Определяет, начинается ли строка символами другой строки.
    String.prototype.substr()
    Возвращает указанное количество символов в строке, начинающихся с указанной позиции.
    String.prototype.substring()
    Возвращает символы в строке между двумя индексами.
    String.prototype.toLocaleLowerCase()
    Приводит символы в строке к нижнему регистру согласно текущей локали. Для большинства языков, метод делает то же самое, что и метод toLowerCase().
    String.prototype.toLocaleUpperCase()
    Приводит символы в строке к верхнему регистру согласно текущей локали. Для большинства языков, метод делает то же самое, что и метод toUpperCase().
    String.prototype.toLowerCase()
    Возвращает строковое значение с символами в нижнем регистре.
    String.prototype.toSource()
    Возвращает литерал объекта, представляющий указанный объект; вы можете использовать это значениедля создания нового объекта. Переопределяет метод Object.prototype.toSource().
    String.prototype.toString()
    Возвращает строковое представление указаного объекта. Переопределяет метод Object.prototype.toString().
    String.prototype.toUpperCase()
    Возвращает строковое значение с символами в верхнем регистре.
    String.prototype.trim()
    Обрезает пробельные символы в начале и в конце строки. Часть стандарта ECMAScript 5.
    String.prototype.trimLeft()
    Обрезает пробельные символы с левой стороны строки.
    String.prototype.trimRight()
    Обрезает пробельные символы с правой стороны строки.
    String.prototype.valueOf()
    Возвращает примитивное значение указанного объекта. Переопределяет метод Object.prototype.valueOf().
    String.prototype[@@iterator]()
    Возвращает новый объект итератора Iterator, который итерируется по кодовым точкам строки и возвращает каждую кодовую точку в виде строкового значения.

    Методы-обёртки HTML

    Эти методы имеют ограниченное применение, поскольку они представляют только ограниченное подмножество доступных тегов и атрибутов HTML.

    String.prototype.anchor()
    <a name="имя"> (цель гипертекста)
    String.prototype.big()
    <big>
    String.prototype.blink()
    <blink>
    String.prototype.bold()
    <b>
    String.prototype.fixed()
    <tt>
    String.prototype.fontcolor()
    <font color="цвет">
    String.prototype.fontsize()
    <font size="размер">
    String.prototype.italics()
    <i>
    String.prototype.link()
    <a href="url"> (ссылка на URL)
    String.prototype.small()
    <small>
    String.prototype.strike()
    <strike>
    String.prototype.sub() }
    <sub>
    String.prototype.sup()
    <sup>

    Примеры

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

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

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

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

    Спецификация Статус Комментарии
    ECMAScript 1-е издание. Стандарт Изначальное определение.
    ECMAScript 5.1 (ECMA-262)
    Определение 'String' в этой спецификации.
    Стандарт  
    ECMAScript 6 (ECMA-262)
    Определение 'String' в этой спецификации.
    Кандидат в рекомендации  

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

    Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Базовая поддержка 0.2 (Да) (Да) (Да) (Да)
    Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Базовая поддержка (Да) (Да) (Да) (Да) (Да) (Да)

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

    Метки документа и участники

    Contributors to this page: Mingun, ethertank, fobo66, teoli
    Обновлялась последний раз: Mingun,
    Скрыть боковую панель