В чем разница между slice () и substr () в JavaScript?

17

Можно ли спросить, какая разница между строковым объектом slice() и substr() в JavaScript?

    
задан dramasea 28.12.2010 в 14:08
источник

5 ответов

34

У них разные подписи, .slice() :

string.slice(beginIndex, endIndex)

В то время как .substr() :

string.substr(beginIndex, length);

Так, например, если у нас есть "1234" и требуется "23" , это будет:

"1234".slice(1,3)
//or...
"1234".substr(1,2)

У них также есть другое поведение для более редко используемых индексов negative , посмотрите документацию MDC для .slice() и .substr() для полных описаний.

    
ответ дан Nick Craver 28.12.2010 в 14:13
  • Обратите внимание, что метод «substr» не является частью стандарта ECMAScript, а также может давать несогласованные результаты в разных браузерах. Вот хорошее резюме: jacklmoore.com/notes/substring-substr-slice-javascript –  C-F 12.06.2013 в 04:54
5
  1. String.slice(begin, end)

    Этот метод вырезает текст из begin в end char, например .:

    alert("Hello World!".slice(1, 8)); // ello Wo
    
  2. String.substr(begin, length)

    Этот метод вырезает текст из begin в begin + length char, например:

    alert("Hello World!".substr(1, 8)); // ello Wor
    
ответ дан Crozin 28.12.2010 в 14:14
2
var str="Hello world!";
document.write(str.substring(3,7)+"<br />");
document.write(str.slice(3,7)+"<br />");
document.write(str.substr(3,7));

результат:

lo w
lo w
lo worl
    
ответ дан Jon 19.07.2012 в 09:54
1

подстроку ()

1. Если start равно stop, он возвращает пустую строку.  2. Если остановка опущена, она извлекает символы в конец строки.  3. Если начать & gt; stop, то подстрока заменит эти 2 аргумента.  4.Если аргумент больше длины строки, любой аргумент будет использовать длину строки.  5. Если любой аргумент меньше 0 или NaN, он обрабатывается так, как если бы он был 0.

срез ()

1. Если start равно stop, он возвращает пустую строку точно так же, как substring ().  2. Если остановка опускается, срез извлекает символы в конец строки, точно так же, как substring ().  3. Если начать & gt; stop, slice () не заменит 2 аргумента.  4.Если любой аргумент больше длины строки, любой аргумент будет использовать длину строки точно так же, как substring ().

    
ответ дан anjaly 15.07.2014 в 11:06
0

Я думаю, что разница между str.slice() и str.substr() является вторым параметром:

.slice() принимает EndIndex, а .substr() занимает длину, как в:

.slice(StartIndex,EndIndex) и .substr(StartIndex,length).

    
ответ дан shadowBot 27.02.2014 в 06:22