substr,slice,substring 的用法与区别

substr(start, length); // 参数可为负数。第二个参数是指定截取长度。
slice(start, end); // 参数可为负数。第二个参数是指定结束位置。
substring(start, end); // 参数为负数被替换成0。交换参数位置,小的在前。第二个参数是指定结束位置。

 substr() 函数:

substr() 方法可在字符串中抽取从 开始 下标开始的指定数目的字符。

注意: substr() 方法不会改变源字符串。

 slice函数:

slice() 方法可从已有的数组中返回选定的元素。

slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

注意: slice() 方法不会改变原始数组。

substring 函数:

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

substring() 方法返回的子串包括 开始 处的字符,但不包括 结束 处的字符。

var s = '0123456789';
s.substr(2, 5); // 23456
s.slice(2, 5); // 234
s.substring(2, 5) // 234



s.substr(2); // 23456789
s.slice(2); // 23456789
s.substring(2) // 23456789
区别:

slice和substring的差异在于slice的参数能够是负数,而substring不行。

slice中的start若是为负数,会从尾部算起,-1表示倒数第一个,-2表示倒数第2个,此时end必须为负数,而且是大于start的负数,不然返回空字符串。slice的end若是为负数,一样从尾部算起,若是其绝对值超过原字符串长度或者为0,返回空字符串。

s.substr(-6) // 456789
s.slice(-6) // 456789

substring会取start和end中较小的值为start,两者相等返回空字符串,任何一个参数为负数被替换为0(即该值会成为start参数)。

substr() 方法被标记为已弃用

substr() 方法存在一些问题,比如当第一个参数为负数时会导致不直观的行为,这可能会引起错误的理解和使用。因此,JavaScript 社区建议不再使用 substr() 方法,并推荐使用更为可靠和清晰的替代方法。

s.substring(-2,5) // 01234
替代方案:substring() 和 slice()

在修复使用 substr() 方法的代码时,可以考虑使用 substring() 或 slice() 方法来获取字符串的子串。这两个方法都能接受起始和结束位置作为参数,并返回指定范围内的子字符串。

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值