常常会用到的截取字符串substr()、substring()、slice()方法详解
slice()
定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数表示子字符串的结束位置(不包括结束位置的那个字符),如果没有传递第二个参数,则将字符串的长度作为结束位置。
1、传递参数为正值情况:
var str ="helloWorld"; // 一个参数,则将字符串长度作为结束位置 alert(str.slice(3)); // "loWorld" // 两个参数,7位置上的字符为"r",但不包括结束位置的字符 alert(str.slice(3,7)); // "loWo"
2、传递参数为负值的情况:
slice()方法会将传入的负值与字符串长度相加。
var str ="helloWorld"; // 一个参数,与字符串长度相加即为slice(7) alert(str.slice(-3)); // "rld" // 两个参数,与字符串长度相加即为slice(3,6) alert(str.slice(3,-4)); // "loW"
3、第二个参数比第一个参数值小的情况:
slice()方法传入的第二个参数比第一个参数小的话,则返回空字符串。
var str ="helloWorld"; alert(str.slice(5,3)); // ""
4、IE兼容性
在IE8浏览器测试下,没啥问题,行为与现代浏览器一致。
substring()
定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数表示子字符串的结束位置(不包括结束位置的那个字符),如果没有传递第二个参数,则将字符串的长度作为结束位置。
1、传递参数为正值情况:与slice()方法行为相同的
var str ="helloWorld"; // 一个参数,则将字符串长度作为结束位置 alert(str.substring(3)); // "loWorld" // 两个参数,7位置上的字符为"r",但不包括结束位置的字符 alert(str.substring(3,7)); // "loWo"
2、传递参数为负值的情况:
substring()方法会把所有负值参数转换为0。来看下例子: var str ="helloWorld"; // 两个参数,-4会转换为0,相当于substring(3,0) -->即为 substring(0,3) alert(str.substring(3,-4)); // "hel"
substring()方法会将较小的数作为开始位置,将较大的数作为结束位置。如上面的例子substring(3,0) 与substring(0,3)是一样效果的。
4、IE兼容性
在IE8浏览器测试下,没啥问题,行为与现代浏览器一致。
substr()
定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数跟之前的方法有些区别,表示返回的字符个数。如果没有传递第二个参数,则将字符串的长度作为结束位置。来看例子:
1、传递参数为正值情况:
var str ="helloWorld"; // 一个参数,则将字符串长度作为结束位置 alert(str.substr(3)); // "loWorld" // 两个参数,从位置3开始截取后面7个字符 alert(str.substr(3,7)); // "loWorld"
2、传递参数为负值的情况:
substr()方法会将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0。
var str ="helloWorld"; // 将第一个负的参数加上字符串的长度---> //即为:substr(7,5) ,从位置7开始向后截取5个字符 alert(str.substr(-3,5)); // "rld" // 将第二个参数转换为0 // 即为:substr(3,0),即从位置3截取0个字符串,则返回空 alert(str.substr(3,-2)); // ""
3、IE兼容性
substr()方法传递负值的情况下会存在问题,会返回原始的字符串。IE9修复了此问题。
总结
在传递正值参数情况下,slice() 和 substring () 行为是一致的,substr()方法在第二个参数上会容易混淆
在传递负值参数情况下,slice() 方法是通过字符串长度相加,符合一般思维,substring()第二个参数转换为0会容易出问题,起始位置会容易变更,
substr() 方法负值情况下会出现IE兼容性问题。
综上,小弟一般推荐使用slice()方法。
相关文章
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
这篇文章主要介绍了JavaScript字符串操作方法 slice、substr、substring及其IE兼容性 的相关资料,需要的朋友可以参考下...2015-12-18php中查找字符吕函数之strstr,strpos,substr,strrchr介绍
我们在php中查找字符是否存在字符串中一般会用到函数strstr,strpos,substr,strrchr,stripos这几个常用的字符查找函数,有需了解的同学可看看。 一、strstr —...2016-11-25- 这篇文章主要介绍了ThinkPHP 模板substr的截取字符串函数详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。...2017-01-15
- 这篇文章主要介绍了thinkphp中字符截取函数msubstr()用法,结合实例形式较为详细的分析了thinkPHP中字符截取函数msubstr()的功能、定义使用技巧与注意事项,需要的朋友可以参考下...2016-01-12
- 这篇文章主要介绍了JS中substring与substr的用法讲解,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧...2016-11-22
- 这篇文章主要介绍了Perl Substr()函数及函数的应用,需要的朋友可以参考下...2015-12-18
php中strlen,mb_strlen,substr(),mb_substr()及mb_strcut的区别
文章详细的介绍了关于strlen,mb_strlen,substr(),mb_substr()及mb_strcut的区别和用法,有需要学习的同学可参考一下。 关于mb_*的字符串分割函数使用: 在win下的...2016-11-25- 下面小编就为大家带来一篇深入理解JS中的substr和substring。小编觉得挺不错的,现在分享给大家,也给大家做个参考...2016-04-27
常常会用到的截取字符串substr()、substring()、slice()方法详解
javascript中给我们提供三个截取字符串的方法,分别是:slice(),substring()和substr()。下面我们对这三个函数进行详细说明和比较,需要的朋友可以参考下...2015-12-18js substr,substring与java substring和C# substring的区别解析
本篇文章主要是对js中substr,substring与java中substring和C#中substring的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25- 这篇文章主要介绍了PHP中substr函数字符串截取用法,结合实例形式分析说明的PHP中substr函数的功能,定义与具体使用技巧,需要的朋友可以参考下...2016-01-09
Js中的substring,substr与C#中的Substring比较
本篇文章主要是对Js中的substring,substr与C#中的Substring进行了比较。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25php substr(),explode(),strrev()
substr(str,start,length); 例:substr('php教程 is very good language',4,5); 输出为 is ve; 当start>str的长度,则返回为(); substr('php is very good language',26,5);...2016-11-25php获取字符串前几位的实例(substr返回字符串的子串用法)
下面小编就为大家带来一篇php获取字符串前几位的实例(substr返回字符串的子串用法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-03-12- 今天一个客户要批量生成400电话,起始位置是10000号,开始我直接生成就出现了如10004的号码但是商人都不喜欢这个数字,所在说过滤尾数是4的数字,我想一下利用substr($str,-1...2016-11-25
mybatis group by substr函数传参报错的解决
这篇文章主要介绍了mybatisgroupbysubstr函数传参报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-01-21