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

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


person dramasea    schedule 28.12.2010    source источник


Ответы (5)


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

string.slice(beginIndex, endIndex)

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

string.substr(beginIndex, length);

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

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

У них также другое поведение для редко используемых отрицательных индексов, см. Документацию по MDC для _ 8_ и _ 9_ для полного описания.

person Nick Craver    schedule 28.12.2010
comment
Обратите внимание, что метод substr не является частью стандарта ECMAScript и также может давать противоречивые результаты в разных браузерах. Вот хорошее резюме: jacklmoore.com/notes/substring-substr-slice- javascript - person C-F; 12.06.2013

  1. String.slice(begin, end)

    Этот метод будет вырезать текст с begin до end символов, например:

    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
    
person Crozin    schedule 28.12.2010

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
person Jon    schedule 19.07.2012

Подстрока ()

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

кусочек()

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

person anjaly    schedule 15.07.2014

Думаю, разница между str.slice() и str.substr() - это второй параметр:

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

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

person shadowBot    schedule 27.02.2014