В чем разница между substr и substring?
в чем разница между
alert("abc".substr(0,2));
и
alert("abc".substring(0,2));
Они оба, похоже, выводят "ab".
8 ответов
разница заключается во втором аргументе. Второй аргумент к 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
принимает индексы, как и еще один способ извлечения строк, фрагмент.
при запуске с 0 вы можете использовать любой метод.
как намекнул в ответе ятима2975, есть дополнительная разница:
substr()
принимает отрицательную начальную позицию в качестве смещения от конца строки. substring()
нет.
С MDN:
если start отрицательный, substr () использует его в качестве символьного индекса из конец веревки.
Итак, чтобы суммировать функциональные различия:
substring(begin-offset, end-offset-exclusive)
где begin-смещение 0
или больше
substr(begin-offset, length)
где begin-offset также может быть отрицательным
другой gotcha я недавно столкнулся с тем, что в IE 8,"abcd".substr(-1)
ошибочно возвращает "abcd"
, тогда как Firefox 3.6 возвращает "d"
как и должно быть. slice
работает правильно на обоих.
подробнее по этой теме можно найти здесь.
основное отличие в том, что
substr () позволяет указать максимальную длину для возврата
substring () позволяет указать индексы, а второй аргумент не включает
существуют некоторые дополнительные тонкости между substr() и 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. Пожалуйста, используйте эти функции соответственно.
большая разница, substr()
is устаревший метод что еще можно использовать, но следует использовать с осторожностью, поскольку они должны быть полностью удалены в будущем. Вы должны работать, чтобы удалить их использование из своего кода. И substring()
метод выполнен успешно и указан первый.