--- title: String.prototype.substring() slug: Web/JavaScript/Reference/Global_Objects/String/substring tags: - JavaScript - String - метод - рядок translation_of: Web/JavaScript/Reference/Global_Objects/String/substring ---
Метод substring() повертає частину рядка між початковим та кінцевим індексами, або до кінця рядка.
str.substring(indexStart[, indexEnd])
indexStartindexEnd {{optional_inline}}Новий рядок, що містить вказану частину наданого рядка.
Метод substring() вирізає символи, починаючи з indexStart, і до (але не включно з) indexEnd. Зокрема:
indexEnd не надано, substring() вирізає символи до кінця рядка.indexStart дорівнює indexEnd, substring() повертає порожній рядок.indexStart більший за indexEnd, тоді ефект substring() буде такий, ніби два аргументи поміняли місцями; Дивіться приклад нижче.Будь-яке значення аргументу менше за 0 чи більше за stringName.length вважається рівним 0 та stringName.length, відповідно.
Будь-яке значення аргументу, що є {{jsxref("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() та властивість {{jsxref("String.length", "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() та {{jsxref("String.substr", "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() та {{jsxref("String.slice", "slice()")}} майже ідентичні, але між ними є пара невеликих відмінностей, особливо у поводженні з від'ємними аргументами.
Метод substring() міняє місцями свої аргументи, якщо indexStart більший за indexEnd, це означає, що рядок все одно буде повернений. Метод {{jsxref("String.slice", "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"
Дивіться більше прикладів з від'ємними числами на сторінці {{jsxref("String.slice", "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)
}
Наведений вище код є прикладом операцій з підрядками. Якщо вам необхідно замінювати підрядки, в більшості випадків вам краще скористатись {{jsxref("String.prototype.replace()")}}.
| Специфікація |
|---|
| {{SpecName('ESDraft', '#sec-string.prototype.substring', 'String.prototype.substring')}} |
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.
{{Compat("javascript.builtins.String.substring")}}