深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性

在截取字符串时常常会用到substr()、substring()、slice()方法,有时混淆之间的用法,故总结下。
阅读目录
slice()
substring()
substr()
总结
slice()
定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数表示子字符串的结束位置(不包括结束位置的那个字符),如果没有传递第二个参数,则将字符串的长度作为结束位置。
1、传递参数为正值情况:
2、传递参数为负值的情况:
3、第二个参数比第一个参数值小的情况:
slice()方法传入的第二个参数比第一个参数小的话,则返回空字符串。
4、IE兼容性
在IE8浏览器测试下,没啥问题,行为与现代浏览器一致。
substring()
定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数表示子字符串的结束位置(不包括结束位置的那个字符),如果没有传递第二个参数,则将字符串的长度作为结束位置。
1、传递参数为正值情况:与slice()方法行为相同的
2、传递参数为负值的情况:
substring()方法会把所有负值参数转换为0。来看下例子:
substring()方法会将较小的数作为开始位置,将较大的数作为结束位置。如上面的例子substring(3,0) 与substring(0,3)是一样效果的。
4、IE兼容性
在IE8浏览器测试下,没啥问题,行为与现代浏览器一致。
substr()
定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数跟之前的方法有些区别,表示返回的字符个数。如果没有传递第二个参数,则将字符串的长度作为结束位置。来看例子:
1、传递参数为正值情况:
2、传递参数为负值的情况:
substr()方法会将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0。
3、IE兼容性
substr()方法传递负值的情况下会存在问题,会返回原始的字符串。IE9修复了此问题。
总结
在传递正值参数情况下,slice() 和 substring () 行为是一致的,substr()方法在第二个参数上会容易混淆
在传递负值参数情况下,slice() 方法是通过字符串长度相加,符合一般思维,substring()第二个参数转换为0会容易出问题,起始位置会容易变更,substr() 方法负值情况下会出现IE兼容性问题。
综上,小弟一般推荐使用slice()方法。
下面给大家介绍slice,substr和substring的区别
首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度。直接看下面例子:
这里有个需要注意的地方就是:substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。
如:
alert(test.substring(7,4)); //o w接着,当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0。测试代码如下:
var test = ’hello world’; alert(test.slice(-)); //rld alert(test.substring(-)); //hello world alert(test.substr(-)); //rld alert(test.slice(,-)); //lo w alert(test.substring(,-)); //hel alert(test.substr(,-)); //空字符串注意:IE对substr接收负值的处理有错,它会返回原始字符串。
您可能感兴趣的文章:JavaScript中解决多浏览器兼容性23个问题的快速解决方法常用原生JS兼容性写法汇总JavaScript 浏览器兼容性总结及常用浏览器兼容性分析JS实现兼容性较好的随屏滚动效果JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果javascript中setAttribute()函数使用方法及兼容性css与javascript跨浏览器兼容性总结js日期对象兼容性的处理方法Javascript 多浏览器兼容性问题及解决方案JavaScript的兼容性与调试技巧相关内容
txt文件是什么|TXT文件转为Excel文件的方法
txt文件是什么|TXT文件转为Excel文件的方法,文件,方法,转为,...
VIVO?y76s手机配置参数|vivoy76s现在值得买吗
VIVO?y76s手机配置参数|vivoy76s现在值得买吗,配置参数,性能,...
华为怎么投屏|华为手机投屏的简单方法
华为怎么投屏|华为手机投屏的简单方法,投屏,方法,怎么投屏,华...
笔记本可以加内存条吗|电脑换加内存条与加固态
笔记本可以加内存条吗|电脑换加内存条与加固态硬盘的方法,内...
打印机安装驱动怎么装|打印机安装驱动的方法和
打印机安装驱动怎么装|打印机安装驱动的方法和步骤,安装驱动,...
小恩爱中打电话具体操作方法
小恩爱中打电话具体操作方法,打电话,操作方法,小恩爱,免费通...
抖音充值抖币方法 抖音如何充值抖币
抖音充值抖币方法 抖音如何充值抖币,充值,抖币,抖音,方法,点...
迅捷CAD编辑器给图纸加地理坐标系的操作方法
迅捷CAD编辑器给图纸加地理坐标系的操作方法,操作方法,编辑器...
fireworks8将长方形变成正方形图片的操作方法
fireworks8将长方形变成正方形图片的操作方法,操作方法,区域,...
让IE8和IE9支持eWebEditor在线编辑器的方法
让IE8和IE9支持eWebEditor在线编辑器的方法,方法,在线,函数,...
ie下$.getJSON出现问题的解决方法
ie下.getJSON出现问题的解决方法,转义,执行,数据,解决方法,请...
IE6图片加载的一个BUG解决方法
IE6图片加载的一个BUG解决方法,解决方法,赋值,缓存,图片加载,...
CSS针对IE6实现网页图片底部留出空白的方法
CSS针对IE6实现网页图片底部留出空白的方法,方法,网页,显示,...
微信键盘设置在哪里 微信键盘设置方法
微信键盘设置在哪里 微信键盘设置方法,键盘设置,微信,方法,键...
HTML5在IE10、火狐下中文乱码问题的解决方法
HTML5在IE10、火狐下中文乱码问题的解决方法,火狐,网页,复制,...