Прототип строки JavaScript имеет несколько предопределенных методов, таких как substring(), substr(), slice(), для получения подстроки из строки. учебник, мы поймем каждый из них и различия между ними, используя примеры.
Строка.прототип.подстрока():
Метод substring() в JavaScript возвращает часть строки между startIndex и endIndex (исключая символ endIndex) или до конца строки, если endIndex не указан
Синтаксис метода String.substring():
Метод substring() принимает два параметра: начальный индекс и конечный индекс. И второй индекс конца параметра является необязательным.
И возвращаемое значение представляет собой новую строку между начальным и конечным индексами.
string.substring(startIndex[, endIndex])
Описание:
- Если мы не передаем никаких параметров, метод вернет ту же самую строку
- Если endIndex не передан, будет возвращена подстрока, начиная с начального индекса и заканчивая концом строки.
- Если startIndex и endIndex совпадают, то метод substring() возвращает пустую строку.
- Если startIndex или endIndex меньше 0 (отрицательное значение), они рассматриваются как 0.
- Если startIndex или endIndex больше, чем string.length, метод substring() обрабатывает их как string.length.
- Если startIndex или endIndex равно NaN, они обрабатываются как 0.
Просмотрите приведенные ниже примеры, чтобы лучше понять это.
String.substring() Примеры:
Мы возьмем строковую переменную и посмотрим, как работает метод substring().
var string = "substring method example"; //No parameters passed var substring = string.substring(); console.log(substring); //"substring method example" //Both paramters passed var substring = string.substring(0,9); console.log(substring); //substring //endIndex is Missed var substring = string.substring(0); console.log(substring); //substring method example //StartIndex and EndIndex are equal var substring = string.substring(0,0); //"" //StartIndex is greater than endIndex var substring = string.substring(9,0); //Nothing but string.substring(0,9); //substring //StartIndex is negative value less than 0 var substring = string.substring(-5,9); //Nothing but string.substring(0,9) //substring //EndIndex is negative value var substring = string.substring(0,-9); //Nothing but string.substring(0,0); //"" var substring = string.substring(9,-19); //Nothing but string.substring(9,0) => string.substring(0,9) //Substring //String Length var length = string.length; //22 //StartIndex greater than string length var substring = string.substring(string.length+1,9); // Nothing But string.substring(string.length,9) => string.substring(9,string.length) //" method usage" //endIndex greater than string length var substring = string.substring(9,string.length+1); //Nothing But string.substring(9,string.length) //" method usage"
Поддержка браузера:
Метод substring() работает почти во всех браузерах, начиная с IE 6+, Microsoft Edge, Chrome, Mozilla, Opera, Safari. А также мобильные браузеры, такие как Android webView, Chrome для Android, Edge mobile, Firefox для Android, Opera Android, iOS Safari и Samsung Internet.

Строка.прототип.substr():
Метод substr() в JavaScript возвращает часть строки, начинающуюся с индекса, и количество символов после начального индекса.
Синтаксис метода String.substr():
Метод substr() принимает два параметра
- startIndex: индекс первого символа.
- length: количество символов для включения в подстроку после startIndex, это необязательно.
И возвращаемое значение представляет собой новую строку в соответствии с заданными параметрами.
string.substr(startIndex[, length])
Описание:
- Если вы не передаете никаких параметров, возвращайте ту же строку
- Если параметр длины не передан, substr() вернет строку, начиная с индекса и заканчивая концом строки.
- Если начальный индекс меньше 0 (отрицательное значение), он будет рассматриваться как (string.length-start), т. е. если длина строки равна 10, а индекс равен -4. Стартовый индекс 10–4=6.
- Если начальный индекс или длина равны NaN, метод substr() интерпретирует их как 0.
- Если длина является отрицательным числом, она обрабатывается как 0
- Если длина не определена, метод substr() возвращает значение до конца строки (как если бы параметр длины не был передан).
String.substr() Примеры:
Мы возьмем образец строки и посмотрим, как работает substr().
var string= "substr method usage";
//No Parameters passed
string.substr()
//"substr method usage"
//Two parametes passed start index and lenght
string.substr(0,6)
//"substr"
//Only start index passed
string.substr(7)
//"method usage"
//Start index is negative value
string.substr(-5)
//Nothing but string.substr(string.length-5)
//"usage"
//Start index is negative value and length passed
string.substr(-12,6)
//Nothing but string.substr(string.length-12,6)
//"method"
//Length is negative value
string.substr(2,-5)
//=> string.substr(2,0)
//""
//Start index is NaN and length not passed
string.substr("test")
//=>string.substr(0) NaN
//"substr method usage"
//Start index is NaN and length passed
string.substr("test",6)
//=>string.substr(0,6)
//"substr"
//Length is NaN
//=>string.substr()
string.substr(5,"test")
//=>string.substr(5,0)
//""
Поддержка браузера:
Как и метод substring(), даже метод substr() поддерживает все браузеры IE 6+, Microsoft Edge, Chrome, Mozilla, Opera, Safari. А также мобильные браузеры, такие как Android webView, Chrome для Android, Edge mobile, Firefox для Android, Opera Android, iOS Safari и Samsung Internet.
Строка.прототип.срез():
Метод slice() аналогичен методу substring(), возвращает часть строки между начальным индексом и конечным индексом (за исключением символа конечного индекса) или до конца строки, если конечный индекс не указан
Синтаксис:
- Метод slice() принимает два параметра startIndex, endIndex
- endIndex не является обязательным
- возвращает новую строку без изменения существующей строки.
string.slice(startIndex[, endIndex])
Описание метода String.prototype.slice():
- Если оба параметра не переданы, метод slice() вернет одну и ту же строку.
- Если конечный индекс не передан, извлекается строка между начальным индексом и концом строки.
- Если начальный индекс или конечный индекс является отрицательным значением, он обрабатывается как (string.length-index). то есть, если индекс равен -5, он ведет себя как string.lenth-5. Поэтому, если вы хотите прочитать строку с обратной стороны, мы можем использовать метод slice(). См. приведенный ниже пример и графическое представление.
- Если начальный и конечный индексы совпадают, то метод slice() вернет пустую строку.
- Если начальный индекс больше конечного индекса, будет возвращена пустая строка.
- Если начальный индекс равен NaN или не определен, он будет рассматриваться как 0.
- Если конечный индекс равен NaN, будет возвращена пустая строка.
- Если конечный индекс не определен, метод slice() вернет частичную строку между начальным индексом и концом строки.
Просмотрите приведенные ниже примеры, чтобы лучше понять это.
String.prototype.slice() Примеры:
Мы возьмем примерную строку и посмотрим, как она работает.
var string = "slice method usage";
//without parameters
string.slice();
//"slice method usage"
//Only Start Index Passed
string.slice(0);
//"slice method usage"
//If Both start and end passed
string.slice(0,5);
//"slice"
//If Start index is negative
string.slice(-5);
//=>string.slice(string.lenght-5)
"usage"
//IfEnd index is negative
string.slice(0,-5);
//=>string.slice(0,string.length-5)
//"slice method "
//If Start index is NaN
string.slice("a",5);
//=>string.slice(0,5)
//"slice"
//If end index is NaN
string.slice(0,"a");
//""
//If start index is greater than end index
string.slice(5,0);
//""
//If start index and end index are equal
string.slice(5,5);
//""
//If the start index is undefined
string.slice(undefined)
//=>string.slice(0)
//"slice method usage"
If the end index is undefined
string.slice(0,undefined)
//"slice method usage"
Метод string.slice() с отрицательными индексами:
Используйте отрицательные индексы, если вы хотите анализировать строку в обратном порядке. См. приведенное ниже графическое представление метода среза.
Отрицательные индексы начинаются с -1, а нормальные индексы начинаются с 0.
Всегда помните, что начальный индекс должен быть меньше конечного индекса.
string.slice(-5) //returns slice string.slice(0) //return slice
Теперь в обоих случаях мы игнорировали конечный индекс, поэтому метод slice() возвращает всю строку, начиная с начального индекса.
string.slice(-5,-3) //returns "sli"
теперь оба индекса ложны. и начальный индекс меньше конечного индекса. поэтому он вернул «sli» (исключая символ конечного индекса)
string.slice(-5,-1) //returns "slic" string.slice(-1) //returns "e"
string.slice(-1) печатает только «e», потому что -1 — это конец строки.

Поддержка браузера:
Метод slice() работает практически во всех браузерах, начиная с IE 6+, Microsoft Edge, Chrome, Mozilla, Opera, Safari. А также мобильные браузеры, такие как Android webView, Chrome для Android, Edge mobile, Firefox для Android, Opera Android, iOS Safari и Samsung Internet.
Различия между string.substring(), string.slice() и string.substr() в JavaScript:
Нет никакой разницы между методами string.substring() и string.slice(), оба работают одинаково, но поведение может меняться в зависимости от передаваемых параметров.
Сходства между методами string.substring() и string.slice():
- Оба принимают два параметра startIndex и endIndex. И поведение такое же, когда оба параметра положительные, а startIndex меньше, чем endIndex.
- Оба метода не изменяют исходную строку.
- В обоих методах substring() и slice() endIndex является необязательным параметром.
- Если endIndex не передан, оба возвращают символы до конца строки.
- Если startIndex или endIndex больше длины строки, они обрабатываются как string.length.
- Если startIndex и endIndex равны, оба метода substring() и slice() возвращают пустую строку.
Фактические различия String.substring() и String.slice():
- Если statIndex больше, чем endIndex (startIndex › endIndex), то метод substring() поменяет местами те параметры, где метод slice() вернет пустую строку (без замены).
- Если startIndex или endIndex является отрицательным значением, метод substring() обрабатывает их как 0, тогда как метод slice() обрабатывает их как (string.length-index). строку с обратной стороны, как описано в приведенных выше примерах.
Почему у нас есть два разных метода slice() и substring() в JavaScript?
Мы могли бы подумать, зачем нам нужны два разных метода slice() и substring(), поскольку их поведение одинаково. Все дело в отрицательных индексах.
Первоначальный JavaScript, созданный в Netscape 2.0, имеет только метод substring(). Если параметры отрицательные, они обрабатываются как 0. И порядок параметров не имеет значения. если начальный индекс больше конечного индекса, он поменяет их местами и выполнит операцию.
А в следующей версии JavaScript 1.2, представленной в Netscape 4.0, они хотели поддерживать отрицательные индексы для обхода строки с обратной стороны.
И не рекомендуется изменять существующую функцию substring(), так как это может нарушить совместимость с существующими сценариями, которые ожидают, что отрицательные индексы будут обрабатываться как ноль (0).
Поэтому они создали новую функцию для обработки отрицательных индексов и назвали ее slice().
Как правило, если вы думаете о хлебе (еде), мы можем нарезать его с начала или с конца. Как нам нравится. Таким же образом нарежьте строку от начала или до конца в зависимости от ваших требований.
Разница между методами substring() и substr() в JavaScript:
На мой взгляд, нам не следует сравнивать методы substring() (или slice()) с методом substr(). Оба полезны в зависимости от нашего требования
- Второй параметр в методе substr() — это длина строки, возвращаемой из начального индекса.
- Принимая во внимание, что вторым параметром в substring() или slice() является end index.
Это единственное основное различие между методами substring() и substr().
Подождите, прежде чем уйти. почему вы не можете подписаться на меня в твиттере или стать другом в Facebook, googlePlus или linkedn, чтобы связаться со мной.
Первоначально опубликовано на www.arungudelli.com 28 июня 2018 г.