В чем разница между
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: // разработчик. Mozilla. org / ru / JavaScript / Reference / Global_Objects / String / substr
substr
( MDN ) принимает параметры как (from, length)
.
substring
( MDN ) принимает параметры как (from, to)
.
alert("abc".substr(1,2)); // returns "bc"
alert("abc".substring(1,2)); // returns "b"
Вы можете помнить, что substring
принимает индексы, как и еще один метод извлечения строки, срез .
При запуске с 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'
Срез против Substr против Substring vs [] Методы
У каждого из этих методов javascript есть преимущества в производительности. Пожалуйста, используйте эти функции соответственно.
Большая разница в том, что substr()
- это устаревший метод , который все еще можно использовать, но его следует использовать с осторожностью, поскольку ожидается, что он будет полностью удален в будущем. Вы должны работать, чтобы удалить их использование из вашего кода. И метод substring()
завершился успешно и определил предыдущий.