Spec-Zone.ru › JavaScript

String.prototype.substring()

Базовый уровень Широко доступен

Эта функция хорошо зарекомендовала себя и работает во многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Метод substring() значений String возвращает часть этой строки от начального индекса до (и исключая) конечного индекса, или до конца строки, если конечный индекс не указан.

Попробуйте

const str = "Mozilla";

console.log(str.substring(1, 3));
// Expected output: "oz"

console.log(str.substring(2));
// Expected output: "zilla"

Синтаксис

substring(indexStart)
substring(indexStart, indexEnd)

Параметры

indexStart
Индекс первого символа, который должен быть включен в возвращаемую подстроку.
indexEnd Необязательный
Индекс первого символа, который должен быть исключен из возвращаемой подстроки.

Возвращаемое значение

Новая строка, содержащая указанную часть заданной строки.

Описание

substring() извлекает символы, начиная с indexStart и до (не включая) indexEnd. В частности:

  • Если indexEnd пропущен или undefined, substring() извлекает символы до конца строки.
  • Если indexStart равен indexEnd, substring() возвращает пустую строку.
  • Если indexStart больше, чем indexEnd, то действие substring() эквивалентно тому, как если бы два аргумента были поменяны местами; см. пример ниже.

Любое значение аргумента, которое меньше 0 или больше str.length, обрабатывается так, как если бы оно было 0 и str.length, соответственно.

Любое значение аргумента, которое является NaN, обрабатывается так, как если бы оно было 0.

Примеры

Использование substring()

Следующий пример использует substring() для отображения символов из строки "Mozilla":

const anyString = "Mozilla";

console.log(anyString.substring(0, 1)); // "M"
console.log(anyString.substring(1, 0)); // "M"

console.log(anyString.substring(0, 6)); // "Mozill"

console.log(anyString.substring(4)); // "lla"
console.log(anyString.substring(4, 7)); // "lla"
console.log(anyString.substring(7, 4)); // "lla"

console.log(anyString.substring(0, 7)); // "Mozilla"
console.log(anyString.substring(0, 10)); // "Mozilla"

Использование substring() со свойством length

Следующий пример использует метод substring() и свойство length для извлечения последних символов конкретной строки. Этот метод может быть легче запомнить, поскольку вам не нужно знать начальный и конечный индексы, как в примерах выше.

const text = "Mozilla";

// Takes 4 last characters of string
console.log(text.substring(text.length - 4)); // prints "illa"

// Takes 5 last characters of string
console.log(text.substring(text.length - 5)); // prints "zilla"

Разница между substring() и substr()

Существуют тонкие различия между методами substring() и substr(), поэтому следует быть осторожным, чтобы не перепутать их.

  • Два параметра substr() — это start и length, в то время как для substring() это start и end.
  • Индекс start в substr() будет обернут к концу строки, если он отрицательный, тогда как substring() ограничит его значением 0.
  • Отрицательные длины в substr() рассматриваются как ноль, тогда как substring() поменяет два индекса местами, если end меньше, чем start.

Кроме того, substr() считается устаревшей функцией в ECMAScript, поэтому лучше избегать её использования, если это возможно.

const text = "Mozilla";
console.log(text.substring(2, 5)); // "zil"
console.log(text.substr(2, 3)); // "zil"

Различия между substring() и slice()

Методы substring() и slice() почти идентичны, но между ними есть несколько тонких различий, особенно в том, как обрабатываются отрицательные аргументы.

Метод substring() меняет местами два своих аргумента, если indexStart больше indexEnd, что означает, что строка все равно будет возвращена. Метод slice() возвращает пустую строку, если это так.

const 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() для получения дополнительных примеров с отрицательными числами.

Замена подстроки внутри строки

Следующий пример заменяет подстроку внутри строки. Он заменит как отдельные символы, так и подстроки. Вызов функции в конце примера создает строку Brave New Web из исходной строки Brave New World.

// Replaces oldS with newS in the string 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("World", "Web", "Brave New World");

Обратите внимание, что это может привести к бесконечному циклу, если oldS сама является подстрокой newS — например, если вы попытаетесь заменить здесь "World" на "OtherWorld".

Более удачный метод для замены строк выглядит следующим образом:

function replaceString(oldS, newS, fullS) {
  return fullS.split(oldS).join(newS);
}

Приведенный выше код служит примером операций с подстроками. Если вам нужно заменить подстроки, в большинстве случаев вам следует использовать String.prototype.replace().

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-string.prototype.substring

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
substring
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

Смотрите также

  • String.prototype.substr()
  • String.prototype.slice()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API