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 相关文章推荐
用Juery网页选项卡实现代码
Jun 13 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
JS常用正则表达式总结
Nov 12 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
Jul 26 Javascript
jQuery 判断元素整理汇总
Feb 28 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
Vue.js如何实现路由懒加载浅析
Aug 14 Javascript
vue给对象动态添加属性和值的实例
Sep 09 Javascript
解决layui动态添加的元素click等事件触发不了的问题
Sep 20 Javascript
vue点击自增和求和的实例代码
Nov 06 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
Jquery attr("checked") 返回checked或undefined 获取选中失效
2013/10/10 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
详解React中的组件通信问题
2017/07/31 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python 不以科学计数法输出的方法
2018/07/16 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
迟到检讨书大全
2014/01/25 职场文书
七一党建活动方案
2014/01/28 职场文书
晚会主持词开场白
2014/03/17 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
工作态度检讨书范文
2015/05/06 职场文书
运动会新闻报道稿
2015/07/22 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书