协慌网

登录 贡献 社区

String.slice 和 String.substring 有什么区别?

有谁知道这两种方法之间的区别:

String.prototype.slice
String.prototype.substring

答案

slice()作用类似于substring() ,但有一些不同的行为。

Syntax: string.slice(start, stop);
Syntax: string.substring(start, stop);

他们有什么共同点:

  1. 如果start等于stop :返回一个空字符串
  2. 如果省略stop :将字符提取到字符串的末尾
  3. 如果任一参数大于字符串的长度,则将使用字符串的长度来代替。

substring() 区别

  1. 如果start > stop ,那么substring将交换这两个参数。
  2. 如果任一参数为负或NaN ,则将其视为0

slice() 区别

  1. 如果start > stopslice()将返回空字符串。 ( ""
  2. 如果start为负:从字符串的末尾设置 char,就像 Firefox 中的substr()一样。在 Firefox 和 IE 中都观察到此行为。
  3. 如果stop为负:将 stop 设置为: string.length – Math.abs(stop) (原始值),但以ECMA 规范中的范围为 0(因此, Math.max(0, string.length + stop) )为界。

来源: 编程和开发的基本艺术:Javascript:substr()vs substring()

注意:如果您急于和 / 或正在寻找简短答案,请滚动到答案的底部,然后阅读最后两行。


让我首先说明事实:

句法:
string.slice(start,end)
string.substr(start,length)
string.substring(start,end)
注意#1: slice()==substring()

它能做什么?
slice()方法提取字符串的一部分,并将提取的部分返回到新字符串中。
substr()方法提取字符串的一部分,从指定位置的字符开始,并返回指定数量的字符。
substring()方法提取字符串的一部分,并将提取的部分返回到新字符串中。
注意#2: slice()==substring()

更改原始字符串?
slice()
substr()不会
substring()不会
注意#3: slice()==substring()

使用负数作为参数:
slice()选择从字符串末尾开始的字符
substr()选择从字符串末尾开始的字符
substring()不执行
注意#3: slice()==substr()

如果第一个参数大于第二个参数:
slice()不执行
substr()因为第二个参数不是位置,而是长度值,它将照常执行,没有问题
substring()将交换两个参数,并照常执行

第一个论点:
slice()必需,指示:起始索引
substr()必需,指示:起始索引
substring()必需,指示:起始索引
注意#4: slice()==substr()==substring()

第二个论点:
slice()可选,终止提取的位置(最多但不包括)
substr()可选,要提取的字符数
substring()可选,终止提取的位置(最多但不包括)
注意#5: slice()==substring()

如果省略第二个参数怎么办?
slice()从字符串的开始位置到结尾选择所有字符
substr()从字符串的开始位置到结尾选择所有字符
substring()substring()的开始位置到结尾选择所有字符
注意#6: slice()==substr()==substring()

因此,可以说slice()substr()之间有区别,而substring()基本上是slice()的副本。

综上所述:
如果知道要停止的索引(位置)(但不包括在内),请使用slice()
如果您知道要提取的字符长度,请使用substr()

Ben Nadel 撰写了一篇很好的文章,指出了这些函数的参数差异:

String.slice( begin [, end ] )
String.substring( from [, to ] )
String.substr( start [, length ] )

他还指出,如果 slice 的参数为负,则它们将从结尾引用字符串。 Substring 和 substr 不会。

这是他关于此的文章http://www.bennadel.com/blog/2159-using-slice-substring-and-substr-in-javascript.htm