--- 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])
indexStart
indexEnd
{{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")}}