js字符串截取函数slice、substring和substr的比较


Posted in Javascript onMay 17, 2016

在js中字符截取函数有常用的三个slice()、substring()、substr()了,下面我来给大家介绍slice()、substring()、substr()函数在字符截取时的一些用法与区别吧。

取字符串的三个函数:slice(start,[end]),substring(start,[end])和substr(start,[length])
相关属性:
slice()
第一个参数代表开始位置,第二个参数代表结束位置的下一个位置,截取出来的字符串的长度为第二个参数与第一个参数之间的差;若参数值为负数,则将该值加上字符串长度后转为正值;若第一个参数等于大于第二个参数,则返回空字符串.
substring()
第一个参数代表开始位置,第二个参数代表结束位置的下一个位置;若参数值为负数,则将该值转为0;两个参数中,取较小值作为开始位置,截取出来的字符串的长度为较大值与较小值之间的差.
substr()
第一个参数代表开始位置,第二个参数代表截取的长度
PS:字符串都从0开始计起
例子:

<script type="text/javascript">
   var stmp = "rcinn.cn";
   //使用一个参数
   alert(stmp.slice(3));//从第4个字符开始,截取到最后个字符;返回"nn.cn"
   alert(stmp.substring(3));//从第4个字符开始,截取到最后个字符;返回"nn.cn"
   //使用两个参数
   alert(stmp.slice(1,5))//从第2个字符开始,到第5个字符;返回"cinn"
   alert(stmp.substring(1,5));//从第2个字符开始,到第5个字符;返回"cinn"
   //如果只用一个参数并且为0的话,那么返回整个参数
   alert(stmp.slice(0));//返回整个字符串
   alert(stmp.substring(0));//返回整个字符串
   //返回第一个字符
   alert(stmp.slice(0,1));//返回"r"
   alert(stmp.substring(0,1));//返回"r"
   //在上面的例子中我们可以看出slice()和substring()的用法是相同的
   //返回的值也是一样的,但当参数为负数时,他们的返回值却不一样,看下面的例子
   alert(stmp.slice(2,-5));//返回"i"
   alert(stmp.substring(2,-5));//返回"rc"
   //从上面两个例子可以看出slice(2,-5)实际上是slice(2,3)
   //负5加上字符串长度8转换成正3(若第一位数字等于或大于第二位数字,则返回空字符串);
   //而substring(2,-5)实际上是substring(2,0),负数转换为0,substring总是把较小的数作为起始位置。
   alert(stmp.substring(1,5))//从第2个字符开始,到第5个字符;返回"cinn"
   alert(stmp.substr(1,5));//从第2个字符开始,截取5个字符;返回"cinn."
</script>

substr 和 substring方法的区别

<script type="text/javascript"> 
var str = "0123456789";// 
alert(str.substring(0));//------------"0123456789" 
alert(str.substring(5));//------------"56789" 
alert(str.substring(10));//-----------"" 
alert(str.substring(12));//-----------"" 
alert(str.substring(-5));//-----------"0123456789" 
alert(str.substring(-10));//----------"0123456789" 
alert(str.substring(-12));//----------"0123456789" 
alert(str.substring(0,5));//----------"01234" 
alert(str.substring(0,10));//---------"0123456789" 
alert(str.substring(0,12));//---------"0123456789" 
alert(str.substring(2,0));//----------"01" 
alert(str.substring(2,2));//----------"" 
alert(str.substring(2,5));//----------"234" 
alert(str.substring(2,12));//---------"23456789" 
alert(str.substring(2,-2));//---------"01" 
alert(str.substring(-1,5));//---------"01234" 
alert(str.substring(-1,-5));//--------"" 
alert(str.substr(0));//---------------"0123456789" 
alert(str.substr(5));//---------------"56789" 
alert(str.substr(10));//--------------"" 
alert(str.substr(12));//--------------"" 
alert(str.substr(-5));//--------------"0123456789" 
alert(str.substr(-10));//-------------"0123456789" 
alert(str.substr(-12));//-------------"0123456789" 
alert(str.substr(0,5));//-------------"01234" 
alert(str.substr(0,10));//------------"0123456789" 
alert(str.substr(0,12));//------------"0123456789" 
alert(str.substr(2,0));//-------------"" 
alert(str.substr(2,2));//-------------"23" 
alert(str.substr(2,5));//-------------"23456" 
alert(str.substr(2,12));//------------"23456789" 
alert(str.substr(2,-2));//------------"" 
alert(str.substr(-1,5));//------------"01234" 
alert(str.substr(-1,-5));//-----------"" 
</script>

函数:split()
功能:使用一个指定的分隔符把一个字符串分割存储到数组
例子:

str=”jpg|bmp|gif|ico|png”;
arr=theString.split(”|”);
//arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组

函数:John()
功能:使用您选择的分隔符将一个数组合并为一个字符串
例子:

var delimitedString=myArray.join(delimiter);
var myList=new Array(”jpg”,”bmp”,”gif”,”ico”,”png”);
var portableList=myList.join(”|”);
//结果是jpg|bmp|gif|ico|png

 函数:indexOf()
功能:返回字符串中匹配子串的第一个字符的下标

var myString=”JavaScript”;
var w=myString.indexOf(”v”);w will be 2
var x=myString.indexOf(”S”);x will be 4
var y=myString.indexOf(”Script”);y will also be 4
var z=myString.indexOf(”key”);z will be -1

在网上看到另一种非常简单的方法,代码如下:

function func(s, n) {


return s.replace(/([^x00-xff])/g, “$1a”).slice(0, n).replace(/([^x00-xff])a/g, “$1″);

}

这个方法非常巧妙,而且基本上是正确的。说“基本上”是因为它在取“123汉字测试”左边长度为 6 的子串时,它返回的是“123汉字”,而不是“123汉”。当然,这也并不一定就是问题,某些情况下需求可能就是这样。这个方法还可以再改进一下,如下:

 function func(s, n) {

return s.slice(0, n).replace(/([^x00-xff])/g, “$1a”).slice(0, n).replace(/([^x00-xff])a/g, “$1″);

}

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
Javascript 对象的解释
Nov 24 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
Nov 25 Javascript
Jquery Ajax请求代码(2)
Jan 07 Javascript
myFocus slide3D v1.1.0 使用方法与下载
Jan 12 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
JavaScript地图拖动功能SpryMap的简单实现
Jul 17 Javascript
Jquery性能优化详解
May 15 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
Aug 31 Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
JS实现留言板功能
Jun 17 Javascript
layer.alert回调函数执行关闭弹窗的实例
Sep 11 Javascript
javascript Promise简单学习使用方法小结
May 17 #Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
May 17 #Javascript
Web前端新人笔记之jquery入门心得(新手必看)
May 17 #Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
May 17 #Javascript
iScroll.js 使用方法参考
May 16 #Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 #Javascript
老司机带你解读jQuery插件开发流程
May 16 #Javascript
You might like
玩转图像函数库―常见图形操作
2006/09/03 PHP
php 静态化实现代码
2009/03/20 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
Script的加载方法小结
2011/01/12 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
python简单实现计算过期时间的方法
2015/06/09 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
自学python的建议和周期预算
2019/01/30 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
简述python Scrapy框架
2020/08/17 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
演讲比赛策划方案
2014/06/11 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
实习单位意见
2015/06/04 职场文书
Python包argparse模块常用方法
2021/06/04 Python
SpringAop日志找不到方法的处理
2021/06/21 Java/Android