Метод substring()
повертає частину рядка між початковим та кінцевим індексами, або до кінця рядка.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
str.substring(indexStart[, indexEnd])
Параметри
indexStart
- Індекс першого символу, який потрібно включити у повернений рядок.
indexEnd
Optional- Індекс першого символу, який непотрібно включати у повернений рядок.
Значення, що повертається
Новий рядок, що містить вказану частину наданого рядка.
Опис
Метод substring()
вирізає символи, починаючи з indexStart
, і до (але не включно з) indexEnd
. Зокрема:
- Якщо
indexEnd
не надано,substring()
вирізає символи до кінця рядка. - Якщо
indexStart
дорівнюєindexEnd
,substring()
повертає порожній рядок. - Якщо
indexStart
більший заindexEnd
, тоді ефектsubstring()
буде такий, ніби два аргументи поміняли місцями; Дивіться приклад нижче.
Будь-яке значення аргументу менше за 0
чи більше за stringName.length
вважається рівним 0
та stringName.length
, відповідно.
Будь-яке значення аргументу, що є NaN
, вважається рівним 0
.
Приклади
Використання substring()
Наступний приклад використовує substring()
, щоб вивести символи з рядка 'Mozilla'
:
let anyString = 'Mozilla'
// Виводить 'M'
console.log(anyString.substring(0, 1))
console.log(anyString.substring(1, 0))
// Виводить 'Mozill'
console.log(anyString.substring(0, 6))
// Виводить 'lla'
console.log(anyString.substring(4))
console.log(anyString.substring(4, 7))
console.log(anyString.substring(7, 4))
// Виводить 'Mozilla'
console.log(anyString.substring(0, 7))
console.log(anyString.substring(0, 10))
Використання substring() з властивістю length
Наступний приклад використовує метод substring()
та властивість length
, щоб отримати останні символи певного рядка. Цей метод, можливо, легше запам'ятати, враховуючи, що вам не потрібно знати початковий та кінцевий індекси, як у попередніх прикладах.
// Виводить 'illa', останні 4 символи
let anyString = 'Mozilla'
let anyString4 = anyString.substring(anyString.length - 4)
console.log(anyString4)
// Виводить 'zilla' останні 5 символів
let anyString = 'Mozilla'
let anyString5 = anyString.substring(anyString.length - 5)
console.log(anyString5)
Різниця між substring() та substr()
Існує невелика відмінність між методами substring()
та substr()
, тому слід бути обережними, щоб не переплутати їх.
Аргументи substring()
відображають початковий та кінцевий індекси, в той час, як аргументи substr()
відображають початковий індекс та кількість символів, яку необхідно включити у повернений рядок.
Крім того, метод substr()
вважається застарілою функціональністю ECMAScript та може бути прибраний з майбутніх версій, а отже, його краще уникати, де можливо.
let text = 'Mozilla'
console.log(text.substring(2,5)) // => "zil"
console.log(text.substr(2,3)) // => "zil"
Різниця між substring() та slice()
Методи substring()
та slice()
майже ідентичні, але між ними є пара невеликих відмінностей, особливо у поводженні з від'ємними аргументами.
Метод substring()
міняє місцями свої аргументи, якщо indexStart
більший за indexEnd
, це означає, що рядок все одно буде повернений. Метод slice()
повертає порожній рядок у цьому випадку.
let text = 'Mozilla'
console.log(text.substring(5, 2)) // => "zil"
console.log(text.slice(5, 2)) // => ""
Якщо один або обидва аргументи від'ємні чи NaN
, метод substring()
вважає, що вони дорівнюють 0
.
console.log(text.substring(-5, 2)) // => "Mo"
console.log(text.substring(-5, -2)) // => ""
slice()
також вважає аргументи NaN
рівними 0
, але, коли отримує від'ємні значення, він рахує індекс у зворотньому напрямку, з кінця рядка.
console.log(text.slice(-5, 2)) // => ""
console.log(text.slice(-5, -2)) // => "zil"
Дивіться більше прикладів з від'ємними числами на сторінці slice()
.
Заміна підрядка всередині рядка
Наступний приклад замінює підрядок всередині рядка. Він замінить і окремі символи, і підрядки. Виклик функції в кінці прикладу змінює рядок Прекрасний новий світ на Прекрасний новий сайт
.
// Замінює oldS на newS у рядку fullS
function replaceString(oldS, newS, fullS) {
for (let i = 0; i < fullS.length; ++i) {
if (fullS.substring(i, i + oldS.length) == oldS) {
fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length)
}
}
return fullS
}
replaceString('світ', 'сайт', 'Прекрасний новий світ')
Зауважте, що це може призвести до нескінченного циклу, якщо oldS
сам є підрядком newS
— наприклад, якби ви спробували замінити тут 'світ'
на 'всесвіт'
.
Кращим методом заміни рядків є наступний:
function replaceString(oldS, newS, fullS) {
return fullS.split(oldS).join(newS)
}
Наведений вище код є прикладом операцій з підрядками. Якщо вам необхідно замінювати підрядки, в більшості випадків вам краще скористатись String.prototype.replace()
.
Специфікації
Специфікація |
---|
ECMAScript (ECMA-262) The definition of 'String.prototype.substring' in that specification. |
Сумісність з веб-переглядачами
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.