String.slice和String.substring有什么区别?
有谁知道这两种方法有何区别:
String.slice
String.substring
slice()
像substring()
,具有一些不同的行为。
Syntax: string.slice(start, stop);
Syntax: string.substring(start, stop);
他们有什么共同之处:
start
等于stop
:返回一个空字符串 stop
:将字符提取到字符串的末尾 substring()
区别 :
start > stop
,那么substring
将交换这2个参数。 NaN
,则将其视为0
。 slice()
区别 :
start > stop
,则slice()
不会交换2个参数。 start
是负数:从字符串的末尾设置char,就像Firefox中的substr()
一样。 在Firefox和IE中都会出现这种行为。 stop
为负:将停止设置为: string.length – Math.abs(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()==substr()
如果第一个参数大于第二个参数:
slice()
不执行
substr()
因为第二个参数不是位置,而是长度值,它将像往常一样执行,没有问题
substring()
将交换两个参数,并像往常一样执行
第一个论点:
slice()
必需,表示:起始索引
substr()
必需,表示:起始索引
substring()
必需,表示:起始索引
注#4: slice()==substr()==substring()
第二个论点:
slice()
可选,位置(最多但不包括)结束提取的位置
substr()
可选,要提取的字符数
substring()
可选,位置(最多但不包括)结束提取的位置
注#5: slice()==substring()
如果第二个论据被忽略会怎么样?
slice()
选择从开始位置到结束字符串的所有字符
substr()
选择从开始位置到结束字符串的所有字符
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 ] )
他还指出,如果要切片的参数是负数,它们会从末尾引用字符串。 子串和substr不是。
这里是他关于这个http://www.bennadel.com/blog/2159-using-slice-substring-and-substr-in-javascript.htm的文章
链接地址: http://www.djcxy.com/p/96983.html上一篇: What is the difference between String.slice and String.substring?