【JS点滴】substring和substr以及slice和splice的用法和区别。
那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”;
var a = "get-element-by-id";
function change(obj){
//先将字符串按照“-”进行切割为数组
var arr = obj.split("-");
for(var i=;i<arr.length;i++){
//由于get不需要转大写,所以从下标1开始,对第一位字母转大写,并拼接后面的小写字母
arr[i] = arr[i].charAt().toUpperCase()+arr[i].substring();
}
//对改造完毕的数组元素进行无缝拼接
console.log(arr.join(""));
}
//调用完成
change(a);
这里substring(1)的意思就是从下标1开始一直到字符串结尾处。但是参考写法提供的此处代码是substr(1,arr[i].length-1);
好吧,我承认虽然知道substring和substr都是对字符串进行截取操作,但两者之间的细化区别确实比较模糊,那么这里除了这两个小兄弟,也带上slice与splice就做个使用汇总吧。
一、关于substring()
substring(start,stop)表示返回从start开始到stop处之间的新字符串,其长度为stop减 start。包含start,但不包含stop,且不修改原字符串。这一点与slice的含头不含尾相近。例如:
var str = "";
console.log(str.substring(,))//"1234" length为5-1
console.log(str.substring(,),str)//"012345678" "0123456789"
其中start是必填项,stop为选填项,如果stop不填,那表示从start截取到字符串结尾,例如:
var str = "";
console.log(str.substring())//"123456789"
如果 start比stop大,那么方法在执行前会先交换这两个参数。例如:
var str = "";
console.log(str.substring(,))//"4567"
如果 start与stop相等,那么会返回一个空的字符串。例如:
var str = "";
console.log(str.substring(,))//""
如果 start或stop为负数,那么方法在执行前会先将负数变为0。例如:
var str = "";
console.log(str.substring(-,))//"012345"
console.log(str.substring(,-))//"01"
console.log(str.substring(-,-))//""
二、关于substr()
substr(start,length)表示返回从start开始包含length长度的新字符串,包含start,且不修改原字符串,与substring相比,第二个参数由代表结束的下标stop变成了规定新字符串长度的length,例如:
var str = "";
console.log(str.substr(,))//"12345" length为5
console.log(str.substr(,),str)//"234567" "0123456789"
其中start是必填项,length为选填项,如果length不填,那表示从start截取到字符串结尾,例如:
var str = "";
console.log(str.substr())//"123456789"
如果start为负数,那么start=str.length+start,例如:
var str = "";
console.log(str.substr(-))//"9"
console.log(str.substr(-,))//"456"
如果length为负数或者0,那么返回空字符串,例如:
var str = "";
console.log(str.substr(,))//""
console.log(str.substr(-,-))//""
console.log(str.substr(-,))//""
三、关于slice()
首先要说的是,slice可操作数组和字符串,但substring和substr只能操作字符串,splice只能操作数组。
slice(start,stop)表示截取从下标start 到下标stop(不包括该元素)的之间的元素,并返回新数组/新字符串,并不修改原数组/原字符串,这点上面说了,与substring很相似。例如:
var str = "";
arr = [,,,,,,,,,];
console.log(str.slice(,))//"12345"
console.log(arr.slice(,))//[1,2,3,4,5]
其中start是必填项,stop为选填项,如果stop不填,那表示从start截取到数组结尾/字符串结尾,例如:
var str = "";
arr = [,,,,,,,,,];
console.log(str.slice())//"123456789"
console.log(arr.slice())//[1,2,3,4,5,6,7,8,9]
如果 start比stop大(不会互换),或start与stop相等,则截取的为空,例如:
var str = "";
arr = [,,,,,,,,,];
console.log(str.slice(,))//""
console.log(arr.slice(,))//[]
console.log(str.slice(,))//""
console.log(arr.slice(,))//[]
需要特别注意的是,如果 start或者stop为负数,那么负数的选项从数组尾部开始算起的位置,最后一个数字为-1,倒数第二个数字为-2,依次类推。例如:
var str = "";
console.log(str.slice(,-))//"678"
console.log(str.slice(-,-))//"45678"
console.log(str.slice(-,))//"4567"
四、关于splice()
还是再强调一遍,slice可操作字符串和数组,但是splice不能操作字符串,会报错。
splice(start,length,items)表示从下标start处截取length长度(与substr有点像)的元素后,在start处为原数组添加items,并返回被截取的新数组,splice会直接修改原数组,例如:
var arr = [,,,,,,,,,];
console.log(arr.splice(,,,,))//[1,2,3]
console.log(arr);//[0,2,3,4,4,5,6,7,8,9] 原数组被截取走了1,2,3,并加入了2,3,4
其中start和length为必填项,items为选填项,如果length为0或者负数,则返回空数组(这里与substr相似),例如:
var arr = [,,,,,,,,,];
console.log(arr.splice(,,,,))//[]
console.log(arr);//[0,2,3,4,1,2,3,4,5,6,7,8,9] 直接在原数组下标0处并加入了2,3,4
var arr = [,,,,,,,,,];
console.log(arr.splice(,-,,,))//[]
console.log(arr);//[0,2,3,4,1,2,3,4,5,6,7,8,9] 直接在原数组下标0处并加入了2,3,4
如果start为负数,则原理和slice负数从右往左截取,最后一位数字为-1,倒数第二位为-2,依次类推,例如:
var arr = [,,,,,,,,,];
console.log(arr.splice(-,,,,))//[9]
console.log(arr);//[0,1,2,3,4,5,6,7,8,2,3,4] 从右往左截取1位,也就是9,并加入2,3,4
嗯....貌似四个对比的都说完了,一次对比汇总,多多感受吧。

【JS点滴】substring和substr以及slice和splice的用法和区别。的更多相关文章
- (转)substring和substr以及slice和splice的用法和区别
转载地址:https://www.cnblogs.com/echolun/p/7646025.html 那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个func ...
- javascript字符串截取的substring、substr和slice
本文详细的介绍了javascript中substring().substr()和slice()三个JS字符串截取的方法,substring()方法用于提取字符串中介于两个指定下标之间的字符.subst ...
- js中substring和substr的用法
js中substring和substr的用法 substring 方法用于提取字符串中介于两个指定下标之间的字符 substring(start,end) 开始和结束的位置,从零开始的索引 参数 ...
- javascript中substring()、substr()、slice()的区别
在js字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧. ...
- 不要再混淆js的substring和substr了!(附js所有字符串方法)
一.字符串操作方法 js中字符串方法操作有很多:concat.indexOf.... 这里只要介绍两种经常混淆的字符串截取方法:substring.substr 二.从例子入手 let str = ' ...
- js中substring与substr的学习。
今天在工作的过程中,看到js中两个双胞胎函数.分别是substring与substr.顿时被两个可恶的家伙给迷惑住了,不知道具体有什么作用.. 先来看看substring手册是怎么介绍的. 手册解释的 ...
- substring()、 substr() 、slice()的区别:
stringObject.substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符.start必需.一个非负的整数,规定要提取的子串的第一个字符在 stringObjec ...
- js中substring和substr的用法比较
推荐使用substring 方法 stringObject.substring(start,stop) stringObject.substr(start,length) 定义和用法 提取 ...
- js中substring和substr的用法 (转)
1.substring 方法 定义和用法 substring 方法用于提取字符串中介于两个指定下标之间的字符. 语法 stringObject.substring(start,stop) 参数 ...
随机推荐
- 锁——Java同步的基本思想
翻译人员: 铁锚 翻译时间: 2013年11月13日 原文链接: Monitors – The Basic Idea of Java synchronization 如果你上过操作系统课程,你就知道 ...
- unigui的ServerModule常用属性设置
unigui的ServerModule常用属性设置 1)压缩设置 compression是压缩数据用的.默认启用压缩,且压缩级别是最大的. 2)UNIGUI运行时库设置 UNIGUI需要4个运行时库, ...
- [C# 面试总结]9个点如何画10条线
问题描述 9个点画10条直线,要求每条直线上至少3个点,相信这道理题目很多朋友在面试的时候都遇到过的(同时自己在面试的时候也遇到过),所以这里记录下来以备复习. 解决方法1:
- C# 不能用于文件名的字符
在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/ 就可以看到windows 提示的不能作为文件名的字符 那么具体是包括哪些符号不能作为文件名? Tilde (~) Numbe ...
- C#Datetimepicker出现问题及解决方法
前几天公司用的物料管理系统出现了一个很奇怪的问题,具体的现象是:10月31号的那天,物流部的人因为之前的问题,需要将之前已经结转的9月份取消结转. ,当操作人员将10改变为9的时候,出现问题了.程序直 ...
- ASP.Net MVC OA项目笔记<三>
1.1.1 业务层和数据层之间加一个数据会话层,封装所有数据操作类实例的创建(工厂类) 工厂类是负责对象的创建 作用:将BLL和DAL解耦了,提供一个数据访问的统一访问点 数据会话层DBSession ...
- owa2013配置HTTPS
- 【BZOJ3555】 [Ctsc2014]企鹅QQ
BZOJ3555 [Ctsc2014]企鹅QQ Solution 只需要前缀Hash,然后考虑每一段的贡献就好了!!! 代码实现 #include<stdio.h> #include< ...
- collections, time, queue的应用
collections (克来克深思) Counter from collections import Counter # 引入模块, 计数器 Counter(康特) s = 'sadfasdfas ...
- 详述MSSQL服务在渗透测试中的利用 (下篇)
part3 MSSQL写文件 步骤1 sp_makewebtask写文件 因为是`SA`权限,如果目标服务器是web服务器,我们也不用去备份了,可以直接写个一句话木马进去到web目录. 在不知道web ...