String.prototype.substr()

Застаріло: Це — нерекомендована функціональність. Хоча деякі браузери все ще можуть її підтримувати, її або вже виключено з актуальних вебстандартів, або вона знаходиться в процесі завершення підтримки, або ж її залишили лише з міркувань зворотної сумісності. Слід уникати її використання, і якщо можливо — оновлювати вже написаний код, що опирається на цю функціональність (дивіться таблицю сумісності внизу цієї сторінки, щоб прийняти рішення). Майте на увазі: ця функціональність може припинити працювати в будь-який момент.

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

[!NOTE] Метод substr не є частиною специфікації ECMAScript: він означений в Додатку B: Додаткових можливостях ECMAScript для веббраузерів, котрий є нормативним необов'язковим для небраузерних платформ. Таким чином, краще користуватися замість нього стандартними методами String.prototype.substring() і String.prototype.slice(), аби код виходив якнайкраще кросплатформовим. Сторінка String.prototype.substring() містить порівняння цих трьох методів.

Спробуйте його в дії

Синтаксис

substr(start)
substr(start, length)

Параметри

start

Індекс першого символу, який буде включено до поверненого підрядка.

length Необов'язкове

Кількість символів, які будуть вибрані.

Повернене значення

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

Опис

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

  • Якщо start >= str.length, то повертається порожній рядок.
  • Якщо start < 0, то індекс рахують від кінця рядка. Висловлюючись формальніше, в такому випадку підрядок починається на позиції max(start + str.length, 0).
  • Якщо start пропущено або має значення undefined, то він вважається рівним 0.
  • Якщо length пропущено або має значення undefined, або ж якщо start + length >= str.length, то substr() видобуває символи аж до кінця рядка
  • Якщо length <0, то повертається порожній рядок.
  • І на місці start, і на місці length, – NaN рівносильно 0.

Попри те, що заохочується уникання використання substr(), не існує тривіального способу перейти в історичному коді від substr() і до slice(), і до substring(), не додаючи по суті поліфіл substr(). Наприклад, str.substr(a, l), str.slice(a, a + l) і str.substring(a, a + l) дають три різні результати, коли str = "01234", a = 1, l = -2: substr() повертає порожній рядок, slice() повертає "123", а substring()"0". Фактичний підхід до рефакторингу залежить від можливого діапазону a та l.

Приклади

Застосування substr()

const 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)); // ''

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

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
substr
Нерекомендоване
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 4
Opera Full support 4
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також