В чем разница между substr и substring?

В чем разница между

alert("abc".substr(0,2));

и

alert("abc".substring(0,2));

Оба они, похоже, выводят "ab".

Ответ 1

Разница во втором аргументе. Второй аргумент substring - это индекс, который должен останавливаться на (но не включать), но второй аргумент substr - это максимальная длина для возврата.

Ссылки

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring

Ответ 2

substr (MDN) принимает параметры как (from, length).
substring (MDN) принимает параметры как (from, to).

alert("abc".substr(1,2)); // returns "bc"
alert("abc".substring(1,2)); // returns "b"

Вы можете помнить, что substring принимает индексы, как и еще один метод извлечения строки, slice.

При запуске с 0 вы можете использовать любой из этих методов.

Ответ 3

Как указано в ответе yatima2975, есть дополнительная разница:

substr() принимает отрицательную начальную позицию как смещение от конца строки. substring() не работает.

От MDN:

Если начало отрицательно, substr() использует его в качестве символьного индекса из конец строки.

Итак, суммируем функциональные различия:

substring(begin-offset, end-offset-exclusive), где начальное смещение 0 или больше

substr(begin-offset, length), где начальное смещение также может быть отрицательным

Ответ 4

Еще одна проблема, с которой я недавно столкнулся, заключается в том, что в IE 8 "abcd".substr(-1) ошибочно возвращает "abcd", тогда как Firefox 3.6 возвращает "d", как и следовало ожидать. slice работает корректно на обоих.

Подробнее об этом разделе можно найти здесь.

Ответ 5

Основное отличие состоит в том, что

substr() позволяет указать максимальную длину для возврата

substring() позволяет вам указывать индексы, а второй аргумент НЕ включается

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

  //*** length vs indices:
    "string".substring(2,4);  // "ri"   (start, end) indices / second value is NOT inclusive
    "string".substr(2,4);     // "ring" (start, length) length is the maximum length to return
    "string".slice(2,4);      // "ri"   (start, end) indices / second value is NOT inclusive

  //*** watch out for substring swap:
    "string".substring(3,2);  // "r"    (swaps the larger and the smaller number)
    "string".substr(3,2);     // "in"
    "string".slice(3,2);      // ""     (just returns "")

  //*** negative second argument:
    "string".substring(2,-4); // "st"   (converts negative numbers to 0, then swaps first and second position)
    "string".substr(2,-4);    // ""
    "string".slice(2,-4);     // ""

  //*** negative first argument:
    "string".substring(-3);   // "string"        
    "string".substr(-3);      // "ing"  (read from end of string)
    "string".slice(-3);       // "ing"        

Ответ 6

Разница - второй параметр. Их второй параметр, в то время как оба числа, ожидают две разные вещи:

При использовании подстроки второй параметр - это первый индекс, который не должен включать:

var s = "string";
s.substring(1, 3); // would return 'tr'

var s = "another example";
s.substring(3, 7); // would return 'ther'

При использовании substr вторым параметром является количество символов для включения в подстроку:

var s = "string";
s.substr(1, 3); // would return 'tri'

var s = "another example";
s.substr(3, 7); // would return 'ther ex'

Ответ 7

Slice vs Substr vs Substring vs [] Методы

Для каждого из этих javascript-методов существуют преимущества производительности. Пожалуйста, используйте эти функции соответственно.

Ответ 8

подстрока(): Имеет 2 параметра "начало" и "конец".

  • Параметр start обязателен и указывает позицию, с которой следует начать добыча.
  • Параметр end является необязательным и указывает позицию, в которой добыча должна закончиться.

Если конечный параметр не указан, извлекаются все символы от начальной позиции до конца строки.

var str = "Substring Example";
var result = str.substring(0, 10);
alert(result);

Output : Substring

Ответ 9

Большая разница: substr() устаревший метод, который все еще можно использовать, но должен быть следует использовать с осторожностью, потому что они, как ожидается, будут удалены полностью в будущем. Вы должны работать, чтобы удалить их использование из своего кода. И метод substring() преуспел и указал прежний.

Ответ 10

подстрока (startIndex, endIndex (не входит в комплект))

substr (startIndex, сколько символов)

const string = 'JavaScript';

console.log('substring(1,2)', string.substring(1,2)); // a
console.log('substr(1,2)', string.substr(1,2)); // av