javascript中String类的subString()方法和slice()方法


Posted in Javascript onMay 24, 2011

在该书2.8.4节中讲到String类中的subString()方法和slice()方法,其用法和返回结果都基本相同,如下示例:

var strObj = new String("hello world"); 
alert(strObj.slice(3)); // 输出结果:"ol world" 
alert(strObj.subString(3)); 
// 输出结果:"ol world" 
alert(strObj.slice(3, 7)); // 输出结果:"lo w" 
alert(strObj.subString(3,7)); // 输出结果:"lo w"

由以上代码的输出结果可已看出,slice()方法和subString()方调用方法法和输出结果完全一样,这两种方法返回的都是要处理的字符串的子串,都接受一个或两个参数,第一个参数是要获取的子串的起始位置,第二个参数是要获取子串的终止位置,如果第二个参数省略终止位置就默认为字符串的长度,且两个方法都不改变String对象自身的值。

为什么有两个功能完全相同的方法呢?事实上,这两个方法并不完全相同,不过只在参数为负值时,他们处理参数的方式稍有不同。

对于负数参数,slice()方法会用字符串的长度加上参数,subString()方法将其作为0处理,例如:

var strObj = new String("hello world"); 
alert(strObj.slice(-3));

// 输出结果:"rld" 
alert(strObj.subString(-3));
  // 输出结果:"hello world" 
alert(strObj.slice(3,-4));

 // 输出结果:"lo w" 
alert(strObj.subString(3,-4))
 // 输出结果:"hel"

这样既可看到slice()和subString()方法的主要不同。当只有参数-3时,slice()返回"rld",subString()则返回"hello world"。这是因为对于字符串"hello world",slice(-3)将被转换成slice(8),而subString(-3)则转化成subString(0)。同样,使用3和-4差别也是很明显。slice()方法将被转换成slice(3,7),与前面的例子相同,返回"lo w"。而subString()方法则将这个两个参数解释为subString(0,3),实际上是:subString(0,3),因为subString()总是把较小的参数作为起始位,较大的数字最为终止位。
Javascript 相关文章推荐
理解 JavaScript 预解析
Oct 25 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
Jun 23 Javascript
js+canvas简单绘制圆圈的方法
Jan 28 Javascript
针对JavaScript中this指向的简单理解
Aug 26 Javascript
vue.js表格组件开发的实例详解
Oct 12 Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 Javascript
浅谈javascript的url参数parse和build函数
Mar 04 Javascript
详解Angular 4.x NgTemplateOutlet
May 24 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
微信小程序实现弹出菜单
Jul 19 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
js中关于String对象的replace使用详解
May 24 #Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
May 24 #Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
May 24 #Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 #Javascript
三级下拉菜单的js实现代码
May 23 #Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
May 23 #Javascript
在Javascript里访问SharePoint列表数据的实现方法
May 22 #Javascript
You might like
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
shiro授权的实现原理
2017/09/21 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Django Admin实现上传图片校验功能
2016/03/06 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python梯度下降算法的实现
2020/02/24 Python
详解anaconda安装步骤
2020/11/23 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
数控技术应届生求职信
2013/11/13 职场文书
门卫人员岗位职责
2013/12/24 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
法人授权委托书
2014/04/03 职场文书
2015年人事科工作总结
2015/04/28 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书