Сводка
Метод substr()
возвращает указанное количество символов из строки, начиная с указанной позиции.
Синтаксис
str.substr(start[, length])
Параметры
start
- Позиция, с которой начинать извлекать символы. Если передано отрицательное число, она трактуется как
strLength + start
, гдеstrLength
равна длине строки (например, если параметрstart
равен -3, то он трактуется какstrLength - 3
.) length
- Необязательный параметр. Количество извлекаемых символов.
Описание
Параметр start
является индексом символа. Индекс первого символа равен 0, а последнего символа — на один меньше длины строки. Метод substr()
начинает извлекать символы начиная с позиции start
и собирая length
символов (если он не достигнет раньше конца строки, в этом случае будет возвращено меньшее количество символов).
Если параметр start
является положительным и он больше, либо равен длине строки, метод substr()
вернёт пустую строку.
Если параметр start
является отрицательным, метод substr()
используется его как индекс символа, начиная с конца строки. Если параметр start
отрицателен и по модулю больше длины строки, метод substr()
будет использовать 0 в качестве начального индекса. Обратите внимание: описанная обработка отрицательных значений аргумента start
не поддерживается JScript от Microsoft.
Если параметр length
равен нулю или отрицателен, метод substr()
вернёт пустую строку. Если параметр length
опущен, метод substr()
извлечёт все символы до конца строки.
Примеры
Пример: использование метода substr()
var str = 'абвгдеёжзи'; console.log('(1, 2): ' + str.substr(1, 2)); // '(1, 2): бв' console.log('(-3, 2): ' + str.substr(-3, 2)); // '(-3, 2): жз' console.log('(-3): ' + str.substr(-3)); // '(-3): жзи' console.log('(1): ' + str.substr(1)); // '(1): бвгдеёжзи' console.log('(-20, 2): ' + str.substr(-20, 2)); // '(-20, 2): аб' console.log('(20, 2): ' + str.substr(20, 2)); // '(20, 2): '
Полифилл
JScript от Microsoft не поддерживает отрицательные значения для начального индекса. Если вы хотите использовать эту возможность, вы можете использовать следующий код совместимости для обхода этой ошибки:
// only run when the substr() function is broken if ('ab'.substr(-1) != 'b') { /** * Get the substring of a string * @param {integer} start where to start the substring * @param {integer} length how many characters to return * @return {string} */ String.prototype.substr = function(substr) { return function(start, length) { // call the original method return substr.call(this, // did we get a negative start, calculate how much it is from the beginning of the string // adjust the start parameter for negative value start < 0 ? this.length + start : start, length) } }(String.prototype.substr); }
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Стандарт | Определена в (информативном) Приложении B: Совместимость. Реализована в JavaScript 1.0. |
ECMAScript 5.1 (ECMA-262) Определение 'String.prototype.substr' в этой спецификации. |
Стандарт | Определена в (информативном) Приложении B: Совместимость. |
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'String.prototype.substr' в этой спецификации. |
Стандарт | Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров. |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |