В чем разница между 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