В чем разница между
alert("abc".substr(0,2));
и
alert("abc".substring(0,2));
Оба они, похоже, выводят "ab".
В чем разница между
alert("abc".substr(0,2));
и
alert("abc".substring(0,2));
Оба они, похоже, выводят "ab".
Разница во втором аргументе. Второй аргумент substring
- это индекс, который должен останавливаться на (но не включать), но второй аргумент substr
- это максимальная длина для возврата.
Ссылки
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
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 вы можете использовать любой из этих методов.
Как указано в ответе yatima2975, есть дополнительная разница:
substr()
принимает отрицательную начальную позицию как смещение от конца строки. substring()
не работает.
От MDN:
Если начало отрицательно, substr() использует его в качестве символьного индекса из конец строки.
Итак, суммируем функциональные различия:
substring(begin-offset, end-offset-exclusive)
, где начальное смещение 0
или больше
substr(begin-offset, length)
, где начальное смещение также может быть отрицательным
Еще одна проблема, с которой я недавно столкнулся, заключается в том, что в IE 8 "abcd".substr(-1)
ошибочно возвращает "abcd"
, тогда как Firefox 3.6 возвращает "d"
, как и следовало ожидать. slice
работает корректно на обоих.
Подробнее об этом разделе можно найти здесь.
Основное отличие состоит в том, что
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"
Разница - второй параметр. Их второй параметр, в то время как оба числа, ожидают две разные вещи:
При использовании подстроки второй параметр - это первый индекс, который не должен включать:
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'
Slice vs Substr vs Substring vs [] Методы
Для каждого из этих javascript-методов существуют преимущества производительности. Пожалуйста, используйте эти функции соответственно.
подстрока(): Имеет 2 параметра "начало" и "конец".
Если конечный параметр не указан, извлекаются все символы от начальной позиции до конца строки.
var str = "Substring Example";
var result = str.substring(0, 10);
alert(result);
Output : Substring
Большая разница: substr()
устаревший метод, который все еще можно использовать, но должен быть следует использовать с осторожностью, потому что они, как ожидается, будут удалены полностью в будущем. Вы должны работать, чтобы удалить их использование из своего кода. И метод substring()
преуспел и указал прежний.
подстрока (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