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?

    下一篇: C# Extend class by adding properties