博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
slice(),substring()和substr()的异同
阅读量:6418 次
发布时间:2019-06-23

本文共 1748 字,大约阅读时间需要 5 分钟。

  1. 三个方法都是对字符串的截取操作,返回被操作的字符串,不会修改字符串本身;
  2. 都接受一或两个参数,第一个参数都为开始的位置;
  3. 只有一个参数且为正数的情况下返回的结果相同;
var str = "12345678";console.log(str.slice(3)); // "45678"console.log(str.substring(3)); // "45678"console.log(str.substr(3)); // "45678"

1. 第二个参数含义不同

slice()substring()第二个参数含义都为指定字符串最后一个字符后面的位置

substr()第二个参数含义为返回的字符数量

var str = "12345678";console.log(str.slice(3,4)); // "4"console.log(str.substring(3,4)); // "4"console.log(str.substr(3,4)); // "4567"

2. 参数为负数

  • slice()会把负数与字符串长度相加
var str = "12345678";console.log(str.slice(-3)); // 相当于 scice(5)  =>  "678"console.log(str.slice(-3,7)); // 相当于 scice(5,7)  =>  "67"console.log(str.slice(3,-3)); // 相当于 scice(3,5)  =>  "45"console.log(str.slice(-5,-3)); // 相当于 scice(3,5)  =>  "45"
  • substring()会把负数转换为0
var str = "12345678";console.log(str.substring(-3)); // 相当于 substring(0)  =>  "12345678"console.log(str.substring(-3,7)); // 相当于 substring(0,7)  =>  "1234567"console.log(str.substring(-5,-3)); // 相当于 substring(0,0)  =>  ""
  • substr()第一个参数为负数会把负数与字符串长度相加和slice()相同,第二个参数为负数返回空字符串
var str = "12345678";console.log(str.substr(-3)); // 相当于 substr(5)  =>  678console.log(str.substr(5,-3)); // 相当于 substr(5,0)  =>  ""

3. 两个参数位置颠倒

意思为将较大的数作为开始位置,而将较小的数作为结束位置,

这个不同点只在slice()substring()才存在,
substr()只有一个参数表示位置,还有一个表示长度,所以不存在这个问题

  • slice()会返回空字符串
var str = "12345678";console.log(str.slice(5,3)); // ""console.log(str.slice(-3,3)); // 相当于 scice(5,3)  =>  ""console.log(str.slice(7,-3)); // 相当于 scice(7,5)  =>  ""
  • substring()调换两个参数的位置
var str = "12345678";console.log(str.substring(5,3)); // 相当于 substring(3,5)  =>  "45"console.log(str.substring(-3,3)); // 相当于 substring(0,3)  =>  "123"console.log(str.substring(7,-3)); // 相当于 substring(7,0)  => substring(0,7)  => "1234567"

总结

来张表吧

本篇如能对您有所帮助,实在是感到荣幸。如有不合理之处也请大家多多指点。

转载地址:http://jqpra.baihongyu.com/

你可能感兴趣的文章
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>
php 环境搭建(windows php+apache)
查看>>
让虚拟机的软盘盘符不显示(适用于所有windows系统包括Windows Server)
查看>>
Cygwin不好用
查看>>
jQuery插件之验证控件jquery.validate.js
查看>>
[经验]无线鼠标和无线键盘真的不能用了?——雷柏的重生之路~
查看>>
【转】plist涉及到沙盒的一个问题
查看>>
GNU make manual 翻译( 一百四十五)
查看>>
重构之美-走在Web标准化设计的路上[复杂表单]3 9 Update
查看>>
linux中的优先搜索树的实现--prio_tree【转】
查看>>
重构之美-跨越Web标准,触碰语义网[开门见山:Microformat]
查看>>