js中 substr(), substring(), slice()的区别
一、作用
三者都是基于原字符串创建新字符串的方法。
接收一到两个参数,第一个参数截取字符串的开始位置(字符下标,从0开始),第二个参数因方法不同而不同,后面不同点会说到。
另外,三个方法都不会修改原字符串的值。
二、相同点
- 都可以传入一个或两个参数
- 只传入一个参数时,都表示从指定下标,截取字符串长度,直到字符串最后一个字符
var str = 'hello sarahshine!'; console.log(str.slice(3)); // 'lo sarahshine!'
console.log(str.substring(3)); // 'lo sarahshine!'
console.log(str.subtr(3)); // 'lo sarahshine!'
三、不同点
2.1 传入两个参数时,第二个参数代表的意义不同
- slice ( ) 和 substring ( ) 的第二个参数,都表示截取字符串的结束位置
- substr ( ) 的第二个参数代表的是,要截取的字符串位数
var str = 'hello sarahshine!'; console.log(str.slice(3,7)); // 'lo s'
console.log(str.substring(3,7)); // 'lo s'
console.log(str.substr(3,7)); // 'lo sara'
2.2 传入的参数是负数
- slice ( ) 会把所有的负数参数加上字符串的长度值,如:str.slice(-3) 相当于 str.slice(14)
- substring ( ) 会把所有的负数参数都转为0
- substr ( ) 会把第一个参数的负值加上字符串的长度值,第二个参数的负值转为0 (毕竟第二个参数是要截取的字符串长度,总不能为负数吧)
var str = 'hello sarahshine!'; //length = 17 //只传入一个负数
console.log(str.slice(-3)); // 'ne!' 相当于str.slice(14)
console.log(str.substring(-3)); // 'hello sarahshine!' 相当于str.substring(0)
console.log(str.substr(-3)); // 'ne!' 相当于str.substr(14) //传入两个负数
console.log(str.slice(-3, -1)); // 'ne' 相当于str.slice(14,16)
console.log(str.substring(-3, -1)); // '' 相当于str.substring(0,0)
console.log(str.substr(-3, -1)); // '' 相当于str.substr(14,0) //传入一正一负
console.log(str.slice(3, -4)); // 'lo sarahsh' 相当于str.slice(3,13)
console.log(str.substring(3, -4)); // 'hel' 相当于str.substring(3,0) 即(0,3)
console.log(str.substr(3, -4)); // '' 相当于str.substr(3,0)
以上都出自《javascript高级程序设计》
js中 substr(), substring(), slice()的区别的更多相关文章
- js中substr,substring,slice。截取字符串的区别
substr(n1,n2) n1:起始位置(可以为负数) n2:截取长度(不可以为0,不可以为负数,可以为空) 当n1为正数时,从字符串的n1下标处截取字符串(起始位置),长度为n2. 当n1为负数时 ...
- substr,substring,slice 的区别
javascript中的三个函数substr,substring,slice都可以用来提取字符串的某一部分(函数名称都是小写,不要写成subStr,subString又或者Substring,记住js ...
- js中substr,substring,indexOf,lastIndexOf的用法小结
第一组:str.substr(start,length) 和 str.substring(start,end) 定义: str.substr(start,length) substr(start,le ...
- js中substr,substring,indexOf,lastIndexOf等的用法
1.substrsubstr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png";alert( ...
- js中substr,substring,indexOf,lastIndexOf,split 的用法
1.substr substr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png";alert ...
- js中substr,substring,indexOf,lastIndexOf,split用法
1.substr substr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png"; aler ...
- JS中substr与substring的区别
js中substr和substring都是截取字符串中子串,非常相近,可以有一个或两个参数. 语法:substr(start [,length]) 第一个字符的索引是0,start必选 length可 ...
- js 字符串截取函数substr,substring,slice之间的差异
js 字符串的截取,主要有三个函数,一般使用三个函数:substr,substring,slice. 而这三个函数是不完全一样的,平时很难记住,在这里做下笔记,下次遇到的时候,直接从这里参考,调用合适 ...
- JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别
JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...
随机推荐
- angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法
本文地址:http://www.cnblogs.com/jying/p/6733408.html 转载请注明出处: 写此文的背景:在工作学习使用angular的$http.post()提交数据时, ...
- 谁用光了磁盘?Docker System命令详解
译者按: Docker镜像,容器,数据卷以及网络都会占用主机的磁盘空间,这样的话,磁盘很容易就会被用完.这篇博客介绍了一个简单的解决方案 - Docker System命令. 原文: What's e ...
- IT职场经纬 |阿里web前端面试考题,你能答出来几个?
有很多小伙伴们特别关心面试Web前端开发工程师时,面试官都会问哪些问题.今天小卓把收集来的"阿里Web前端开发面试题"整理贴出来分享给大家伙看看,赶紧收藏起来做准备吧~~ 一.CS ...
- c/c++测试函数的运行时间(八种方法)
目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但 ...
- 篇2 安卓app自动化测试-初识python调用appium
篇2 安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...
- 树莓派安装ubuntu-server,配置镜像,安装python/mysql/samba记录
目标: 1/在raspberrypi 3B上安装ubuntu-server 2/配置好python/mysql/samba等服务,实现爬虫稳定运行我的硬件准备: 1/raspberrypi 3B 2/ ...
- (原创)看我用各种姿势在手机和PC查看到连接到的wifi密码
今天一个女神来我家做客,她问我WiFi密码,然而我却奇迹般的忘记了(特么的当时心里一万个草泥马踏过去),让我在她面前尴尬求子的,所以为了防止你们也出现这种情况,我特地把各种方法整理了一下,那么感兴趣的 ...
- 浅谈PHP+Access数据库的连接 注意要点
今天公司需要用php连接access 数据库,结果整了半天Access数据库 就是连接不上,查找 很多资料,以下是我的经验, -.- 希望能给需要连接access 数据的人带来帮助..-.- 需要注意 ...
- mui开发app之多图压缩与上传(仿qq空间说说发表)
欲实现效果图 提出需求点: 用户可自由添加删除替换多张图片,并且显示相应缩略图,限制为8张 用户可选择压缩图或直接上传原图功能 返回提醒用户会丢失填写的信息 下面一个个实现上述需求,从简单到复杂: 需 ...
- linux 下启动程序的时候会显示坏的解释器,或者没有那个文件
又一次开发的时候在windowns上编写完的程序放到linux下运行的时候,比如:./start.sh的时候显示:"坏的解释器,没有那个文件"错误, 原因是windowns下写的s ...