为啥有两种不同的方法 slice() 和 substring()?
Posted
技术标签:
【中文标题】为啥有两种不同的方法 slice() 和 substring()?【英文标题】:Why two different methods slice() & substring()?为什么有两种不同的方法 slice() 和 substring()? 【发布时间】:2013-08-15 23:06:00 【问题描述】:var name="nameSomnath";//remove name
我可以使用slice()
var result = name.slice( 4 );
substring()
也可以这样做
var result = name.substring( 4 );
那么是什么让它们与众不同。
我已经看到链接Here 详细说明了区别。但是我们可以使用任何一种方法来做同样的事情,即slice()
或substring()
。那么为什么需要有两种方法。
【问题讨论】:
可以参考这个***.com/questions/2243824/… 【参考方案1】:切片
.slice(开始,结束)
不包括给定的结束索引元素
substr
.substr(开始,长度)
从 start 位置到 no 的摘录。字符数。指定
子字符串
.substring(开始,结束)
提取两个指定索引之间之间的字符
【讨论】:
关于substr
和substring
***.com/a/22439570/2557900的更多信息
slice() not 返回一个数组:w3schools.com/jsref/jsref_slice_string.asp
Charles,这是我对数组一的混淆,应该早就更新了。感谢您指出!【参考方案2】:
尽管表面上看起来 slice
和 substring
做同样的事情,但最大的区别在于它们处理否定论点的方式。
在 Netscape 2.0 中首次创建 javascript 时,只有一个 substring
方法。如果其中任何一个参数为负数,则将它们视为 0。
当 JavaScript 1.2 与 Netscape 4.0 一起引入时,他们希望添加允许负索引表示距字符串末尾的距离的行为。他们无法更改 substring
以具有此新行为,因为它会破坏与预期负索引被视为 0 的脚本的向后兼容性,因此他们必须创建一个新函数来支持添加的功能。这个函数被称为slice
,并在Array
和String
上实现。
另一个较小的区别是substring
的参数顺序无关紧要,因此substring(1, 4)
与substring(4, 1)
相同。对于slice
,顺序确实很重要,所以slice(4, 1)
只会产生一个空字符串。
【讨论】:
【参考方案3】:使它们不同的一项是您省略的第二个参数
slice
:第二个参数是取范围的结束索引(不包括)。
substr
:第二个参数是从第一个参数指定的索引中获取的字符串长度
您能否在 string
实例上完全复制一种方法的行为与另一种方法的行为?是的。为什么他们选择将两者都包括在内可能已经被历史遗忘了。我的猜测是熟悉。我敢打赌,很少有框架有slice
和strings
,但有很多框架有substr
。
【讨论】:
【参考方案4】:在slice
中,参数是第一个索引和最后一个索引。在substr
中,参数是第一个索引和长度。
【讨论】:
【参考方案5】:编辑: 糟糕——我错了——字符串也有切片方法!我将再次删除我的帖子-抱歉没有正确研究!!!或者,好吧,可能不会删除它,但至少在其中留下这个更正。 ;-)
您正在查看不同类的两种方法。 substr
只能应用于String
-objects,而slice
属于Array
-objects。它们可能看起来与 yo 相似,但在内部它们以不同的方式工作,因为它们处理的数据不同。
顺便说一句,这 不是 一个 jQuery 而是一个普通的 JavaScript 问题。 ;-)
【讨论】:
以上是关于为啥有两种不同的方法 slice() 和 substring()?的主要内容,如果未能解决你的问题,请参考以下文章