【问题标题】: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()。那么为什么需要有两种方法。

【问题讨论】:

标签: javascript substring slice substr


【解决方案1】:

切片

.slice(开始,结束)

不包括给定的结束索引元素


substr

.substr(开始,长度)

start 位置到 no 的摘录。字符数。指定


子字符串

.substring(开始,结束)

提取两个指定索引之间之间的字符


【讨论】:

【解决方案2】:

尽管表面上看起来 slicesubstring 做同样的事情,但最大的区别在于它们处理否定论点的方式。

在 Netscape 2.0 中首次创建 JavaScript 时,只有一个 substring 方法。如果其中任何一个参数为负数,则将它们视为 0。

当 JavaScript 1.2 与 Netscape 4.0 一起引入时,他们希望添加允许负索引表示距字符串末尾的距离的行为。他们无法更改 substring 以具有此新行为,因为它会破坏与预期负索引被视为 0 的脚本的向后兼容性,因此他们必须创建一个新函数来支持添加的功能。这个函数被称为slice,并在ArrayString上实现。

另一个较小的区别是substring 的参数顺序无关紧要,因此substring(1, 4)substring(4, 1) 相同。对于slice,顺序确实很重要,所以slice(4, 1) 只会产生一个空字符串。

【讨论】:

    【解决方案3】:

    使它们不同的一项是您省略的第二个参数

    • slice:第二个参数是取范围的结束索引(不包括)。
    • substr:第二个参数是从第一个参数指定的索引中获取的字符串长度

    您能否在 string 实例上完全复制一种方法的行为与另一种方法的行为?是的。为什么他们选择将两者都包括在内可能已经被历史遗忘了。我的猜测是熟悉。我敢打赌,很少有框架有slicestrings,但有很多框架有substr

    【讨论】:

      【解决方案4】:

      slice 中,参数是第一个索引和最后一个索引。在substr 中,参数是第一个索引和长度。

      【讨论】:

        【解决方案5】:

        编辑: 糟糕——我错了——字符串也有切片方法!我将再次删除我的帖子-抱歉没有正确研究!!!或者,好吧,可能不会删除它,但至少在其中留下这个更正。 ;-)

        您正在查看不同类的两种方法。 substr 只能应用于String-objects,而slice 属于Array-objects。它们可能看起来与 yo 相似,但在内部它们以不同的方式工作,因为它们处理的数据不同。

        顺便说一句,这 不是 一个 jQuery 而是一个普通的 JavaScript 问题。 ;-)

        【讨论】:

          猜你喜欢
          • 2014-01-25
          • 2010-12-28
          • 2021-10-12
          • 1970-01-01
          • 1970-01-01
          • 2013-05-01
          • 2019-04-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多