substr,substring,slice 的区别
javascript中的三个函数substr,substring,slice都可以用来提取字符串的某一部分(函数名称都是小写,不要写成subStr,subString又或者Substring,记住js是区分大小写的),但是它们之间还是有一些区别的。
substring(start,end)和slice(start,end)都表示提取从start下标开始(包括该下标上的字符)到end下标结束(不包括该下标上的字符)之间的内容,如果不包含end参数则表示提取从start到结尾的全部字符
例1:
"9876543210".substring(0,2)-->"98"
"9876543210".slice(0,2)-->"98"
"9876543210".substring(5)-->"43210"
"9876543210".slice(5)-->"43210"
但是他们之间还是有区别的,
substring不支持负数参数(如果为负数则转换为0来处理),slice支持负数参数(如果参数为负数则表示从最右边算起,例1第一行中的0为-1,1为-2);substring如果end>start则互相交换,而slice则不支持交换
例2:
上面的slice中的-5从尾部0开始数刚好为4,-2则为1,因为不会包含end的字符所以提取了"432"
而substring则将-5,-2都转换为0来出来所以实际为"9876543210".substring(0,0)所以得到""的空字符串。
例3:
"9876543210".slice(5,1)-->""
"9876543210".substring(5,1)-->"8765"
上面的slice开始小标大于结束小标, 因为不支持交换所以只能得到""
substring则被解释为"9876543210".substring(1,5)所以得到了"8765"
下面来解释一下substr函数,为什么要将substr放到最后呢,因为substr其实是不是作为ECMAScript标准发布的,因此各种浏览器之间不是兼容的,但是既然提出来了还是讲一下
substr(start,length)函数可以看出其实和上面两种函数的差别,即第二个参数代表的是截取的长度,不再是作为结尾下标来处理,所以该函数表示从开始下标start开始,向右截取length个长度的字符。按照w3c上来讲start是支持负数的,即表示从字符传的结尾开始计算,但是因为该函数并不是标准里的所以各浏览器实现不一,所以还是不建议用负数了。length为负数则不会截取任何字符,因为长度不可能为负的
例4:
"9876543210".substr(2,3)-->"765"
"9876543210".substr(2,-1)-->""
第一个从开始下标为2的7开始,截取三个字符得到"765"
第二个因为长度为-1所以不做任何截取操作
例5:
"9876543210".substr(-5,2)-->"43"(FireFox)
"9876543210".substr(-5,2)-->"98"(IE)
看上面两个实现,FireFox中开始下标-5按照从尾部开始计算取倒数第5个数即4开始截取两个字符得到"43"
而IE下将-5转换为0因此从左开始计算得到0下标的9,再获取两个长度得到"98"
可以明显的看到因为不标准的缘故,实现方式产生了不一致。
substr,substring,slice 的区别的更多相关文章
- js中 substr(), substring(), slice()的区别
一.作用 三者都是基于原字符串创建新字符串的方法. 接收一到两个参数,第一个参数截取字符串的开始位置(字符下标,从0开始),第二个参数因方法不同而不同,后面不同点会说到. 另外,三个方法都不会修改原字 ...
- js 字符串截取函数substr,substring,slice之间的差异
js 字符串的截取,主要有三个函数,一般使用三个函数:substr,substring,slice. 而这三个函数是不完全一样的,平时很难记住,在这里做下笔记,下次遇到的时候,直接从这里参考,调用合适 ...
- javascript中substring()、substr()、slice()的区别
在js字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧. ...
- [javascript string] slice();substr();substring();之间的区别
今天遇到这个问题,发现ぜんぜんわすねまます3个方法,直接上代码吧,[网络版本较多就不注明参考过哪些了 -0- ] var test = 'hello world'; //均一位参数测试 console ...
- JavaScript中的slice,splice,substr,substring,split的区别
万恶的输入法,在sublime中会显示出繁体字,各位看官见谅. 1.slice()方法:该方法在数组和string对象中都拥有. var a = [1,2,3,4,5,6]; var s = 'thi ...
- js中substr,substring,slice。截取字符串的区别
substr(n1,n2) n1:起始位置(可以为负数) n2:截取长度(不可以为0,不可以为负数,可以为空) 当n1为正数时,从字符串的n1下标处截取字符串(起始位置),长度为n2. 当n1为负数时 ...
- substring,substr,和slice的区别详解。
1.Substring(x,y) : 输出一个字符串,当其中只有一个参数时,会输出从x开始到结尾的String. 举例: var str="hello"; conso ...
- substring()、 substr() 、slice()的区别:
stringObject.substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符.start必需.一个非负的整数,规定要提取的子串的第一个字符在 stringObjec ...
- slice,splice,substr,substring函数的区别
slice: 语法:array.slice(startIndex,endIndex); 参数: startIndex:必须,规定从何处开始选取,如果为负则从尾部开始计算 : endIndex:可选,规 ...
随机推荐
- Scala基础入门-1
首先需要Scala开发环境的搭建,网上自己找教程. 声明常量与变量 val foo = 0 // 常量 var bar = 0 // 变量 在Scala中,更加鼓励使用val来进行声明,也就是推荐使用 ...
- div中嵌套div速度将会同样很慢
---恢复内容开始--- div中嵌套了div速度将会同样很慢 最近很多老板在我们公司做企业站的时候都会要求说:我要div+css的,不要表格建的那种,那样不利于优化.但我们发现就算给他们用div ...
- Scrapy入门程序点评
1,引言 在<Scrapy的架构初探>一文,我基于爬虫开发的经验对Scrapy官网文章作了点评和解读,事件驱动的异步处理架构.极强的模块化等是个绝好的框架,接着我细读了官网的<Scr ...
- 使用keil判断ARM的冷启动和热启动的方法
微处理器:LPC2114 编译环境:Keil MDK V4.10 思路: 常把单片机系统的复位分为冷启动和热启动.所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x0 ...
- OpenGL红宝书学习笔记(1)
OpenGL对场景中的图像进行渲染时所执行的主要操作: 1.根据几何图元创建形状,从而建立物体的数学描述,(OpenGL把点,直线,多边形和位图作为基本的图元) 2.在三维空间中排列物体,并选择观察复 ...
- AjaxPro.dll,asp.net 前台js调用后台方法(无刷新)
1.什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写."Ajax"这个名词的发明人是Jesse ...
- 读取系统执行状态的shell脚本
近期在学习shell.老大让写一个读取系统配置信息的脚本当作练习和工作验收,我就写了这么一个脚本,读取操作系统,内核,网卡,cpu,内存,磁盘等信息,目的是让看的人一眼就能看出这台机子的配置以及眼下的 ...
- mybatisnet轻量级ORM框架
https://code.google.com/p/mybatisnet/source/checkout http://blog.csdn.net/arvinstudy/article/details ...
- 执行SQL存储脚本
using System.Data.SqlClient; static void Main(string[] args) { string connString = @"Data Sourc ...
- Mvc4.0 提取 Cookie 里的东西
/// <summary> /// 提取Cookie /// </summary> /// <returns></returns> public sta ...