Прототип строки 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 г.