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().
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
Смотрите также
© 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