两者有什么区别
alert("abc".substr(0,2));
and
alert("abc".substring(0,2));
它们似乎都输出“ab”。
两者有什么区别
alert("abc".substr(0,2));
and
alert("abc".substring(0,2));
它们似乎都输出“ab”。
当前回答
let str = "Hello World"
console.log(str.substring(1, 3)) // el -> Excludes the last index
console.log(str.substr(1, 3)) // ell -> Includes the last index
其他回答
substring (): 它有两个参数“start”和“end”。
开始参数是必需的,并指定开始的位置 提取。 结束参数为可选参数,用于指定 撤离应该结束。
如果没有指定end参数,则提取从开始位置到字符串结束的所有字符。
var str = "子字符串示例"; Var result = str.substring(0,10); 警报(结果); 输出:子字符串
如果start参数的值大于end参数的值,该方法将交换两个参数。这意味着start将被用作end, end将被用作start。
var str = "子字符串示例"; Var result = str.substring(10,0); 警报(结果); 输出:子字符串
substr():它有两个参数“start”和“count”。
开始参数是必需的,并指定开始的位置 提取。 Count参数是可选的,用于指定要处理的字符数 提取。
var str = "Substr示例"; Var result = str.substr(0,10); 警报(结果); 输出:Substr Exa
如果没有指定count参数,将提取从开始位置到字符串结束的所有字符。如果count为0或负数,则返回空字符串。
var str = "Substr示例"; Var result = str.substr(11); 警报(结果); 输出:ple
差值是第二个参数。它们的第二个参数,虽然都是两个数字,但期望的是两个不同的东西:
当使用子字符串时,第二个参数是不包含的第一个索引:
var s = "string";
s.substring(1, 3); // would return 'tr'
var s = "another example";
s.substring(3, 7); // would return 'ther'
当使用substr时,第二个参数是子字符串中包含的字符数:
var s = "string";
s.substr(1, 3); // would return 'tri'
var s = "another example";
s.substr(3, 7); // would return 'ther ex'
let str = "Hello World"
console.log(str.substring(1, 3)) // el -> Excludes the last index
console.log(str.substr(1, 3)) // ell -> Includes the last index
我最近遇到的另一个问题是,在IE 8中,“abcd”.substr(-1)错误地返回“abcd”,而Firefox 3.6则返回“d”。Slice在两者上都能正常工作。
关于这个主题的更多信息可以在这里找到。
正如yatima2975的答案所暗示的,还有一个额外的区别:
Substr()接受一个负的起始位置作为字符串结束的偏移量。Substring()没有。
中数:
如果start为负,substr()将其用作对象的字符索引 字符串结束。
总结一下功能上的差异:
起始偏移量大于等于0的子字符串(begin-offset, end-offset-exclusive)
Substr (begin-offset, length),其中begin-offset也可以为负