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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Дивіться також
- Поліфіл методу
String.prototype.substr
доступний уcore-js
String.prototype.slice()
String.prototype.substring()