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.

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
substr
Deprecated
Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.

Див. також