slice,substr与substring

slice(),substr(),substring()皆可用于字符串 的提取

以新字符串返回被提取部分,不影响原字符串。
其参数可有0/1/2个,参数为空时三个皆是原样返回整段字符串。

slice

slice(start, end);
截取第start个字符到第end个字符之间的字符串,其中包含第start个字符,不包含第end个字符;
如无end参数则截取至原字符串尾部。
若参数为负数则会+上原字符串的长度,相当于长尾部算起,如-1为最后一个字符。
如果结束位置小于起始位置,则返回空串。
例:

let str = 'Hello World!';
str.slice(3, 8); // 'lo Wo'
str.slice(1, 2); // 'e'
str.slice(4, 3); // '' // 结束位置小于起始位置,则返回空串
str.slice(-2); // 'd!' // 负数+长度
str.slice(-3, 2) // '' // 负数+长度;结束位置小于起始位置
str.slice(2, -2); // 'llo Worl' // 负数+长度

substring

substring(start, end);
截取第start个字符到第end个字符之间的字符串,其中包含第start个字符,不包含第end个字符;
如无end参数则截取至原字符串尾部。
若参数为负数则自动转化为0,且两个参数之间会自动把小值放前,大值放后。

str.substring(3, 8); // 'lo Wo'
str.substring(1, 2); // 'e'
str.substring(4, 3); // 'l' // 转化成substring(3, 4) 大小互换
str.substring(-2); // 'Hello World!' // 转化成substring(0) 也等同于substring()
str.substring(-3, 2) // 'He' // 转化成substring(0, 2)
str.substring(2, -2); // 'He' // 转化成substring(0, 2) // -2变为0,再与前面的2换了位置

substr

substr(start, end);
截取第start个字符开始,长度为end;
如无end参数则截取至原字符串尾部。
若参数为负数时:
第一个参数会+上长度,相当于长尾部算起,如-1为最后一个字符。
第二个参数则会转化为0(长度为0即为返回空字符串)。

str.substr(3, 8); // 'lo World'
str.substr(1, 2); // 'el'
str.substr(4, 3); // 'o W'
str.substr(-2);  // 'd!' // 负数+长度
str.substr(-3, 2) // 'ld' // 负数+长度
str.substr(2, -2) // '' // 负数 => 0

slice()用于数组的截取

slice既可用于字符串也可用于数组的截取,而substr和substring顾名思义只能用于字符串的截取。

slice(start, end);与字符串的slice()一样的效果
截取第start个元素到第end个元素之间的字符串,其中包含第start个元素,不包含第end个元素;
如无end参数则截取至原数组尾部。
若参数为负数则会+上原数组的长度,相当于长尾部算起,如-1为最后一个元素。
如果结束位置小于起始位置,则返回空数组。

let arr = [1, 2, 3, 4, 5];
arr.slice(1); // [2, 3, 4, 5]
arr.slice(1, 3); // [2, 3]
arr.slice(3, 1); // [] // 结束位置小于起始位置,则返回空数组
arr.slice(-2); // [4, 5] // 负数+长度 
arr.slice(3, -1); // [4] // 负数+长度 
arr.slice(-3, 2); // [] // 负数+长度 // 结束位置小于起始位置,则返回空数组

以上为本人个人总结,欢迎交流,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值