--- title: String.prototype.substring() slug: Web/JavaScript/Reference/Global_Objects/String/substring tags: - JavaScript - String - метод - рядок translation_of: Web/JavaScript/Reference/Global_Objects/String/substring ---
{{JSRef}}

Метод substring() повертає частину рядка між початковим та кінцевим індексами, або до кінця рядка.

{{EmbedInteractiveExample("pages/js/string-substring.html")}}

Синтаксис

str.substring(indexStart[, indexEnd])

Параметри

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

Значення, що повертається

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

Опис

Метод substring() вирізає символи, починаючи з indexStart, і до (але не включно зindexEnd. Зокрема:

Будь-яке значення аргументу менше за 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')}}

Сумісність з веб-переглядачами

{{Compat("javascript.builtins.String.substring")}}

Див. також