String.prototype.substr()

Застереження: Хоча метод String.prototype.substr(…) не є строго не рекомендованим (як "прибраний з веб-стандартів"), він вважається застарілим та не бажаний для використання, коли це можливо. Він не є частиною ядра мови JavaScript та може бути прибраний в майбутньому. За можливості, використовуйте замість нього метод substring().

Метод substr() повертає частину рядка, що починається з вказаного індекса та продовжується вказану кількість символів.

Синтаксис

str.substr(start[, length])

Параметри

start
Індекс першого символу, який треба включити у повернений рядок.
length
Необов'язковий. Кількість символів, яку треба повернути.

Значення, що повертається

Новий рядок, що містить вказану частину наданого рядка.

Опис

Метод substr() вирізає length символів з рядка string, рахуючи з початкового індексу start.

Якщо start є додатним числом, індекс рахується з початку рядка. Його значення обмежується значенням str.length.
Якщо start є від'ємним числом, індекс рахується з кінця рядка. Його значення обмежується значенням -str.length.
Заувага: У Microsoft JScript від'ємне значення аргументу start не вважається посиланням на кінець рядка.

Якщо аргумент length пропущений, substr() повертає символи до кінця рядка.
Якщо length дорівнює undefined, substr() повертає символи до кінця рядка.
Якщо length є від'ємним числом, він вважається рівним 0.

Для обох, start та length, NaN вважається рівним 0.

Приклади

Використання substr()

var aString = 'Mozilla';

console.log(aString.substr(0, 1));   // 'M'
console.log(aString.substr(1, 0));   // ''
console.log(aString.substr(-1, 1));  // 'a'
console.log(aString.substr(1, -1));  // ''
console.log(aString.substr(-3));     // 'lla'
console.log(aString.substr(1));      // 'ozilla'
console.log(aString.substr(-20, 2)); // 'Mo'
console.log(aString.substr(20, 2));  // ''

Поліфіл

JScript у Microsoft не підтримує від'ємні значення початкового індекса. Щоб використовувати цю функціональність у JScript, ви можете скористатись наступним кодом:

// запускайте тільки якщо функція substr() не працює
if ('ab'.substr(-1) != 'b') {
  /**
   *  Отримати підрядок з рядка
   *  @param  {integer}  start   де почати підрядок
   *  @param  {integer}  length  скільки символів повертати
   *  @return {string}
   */
  String.prototype.substr = function(substr) {
    return function(start, length) {
      // викликаємо початковий метод
      return substr.call(this,
      	// якщо ми отримали від'ємний start, порахувати, скільки це від початку рядка
        // відкоригувати параметр start для від'ємного значення
        start < 0 ? this.length + start : start,
        length)
    }
  }(String.prototype.substr);
}

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'String.prototype.substr' in that specification.

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також