substring、substr、slice、splice傻傻分不清楚
substring() 只能操作字符串,不修改原字符串
substring(start,stop)表示返回从start开始到stop处之间的新字符串,其长度为stop减 start。包含start,但不包含stop,且不修改原字符串。这一点与slice的含头不含尾相近。
var str = "0123456789";
console.log(str.substring(1,5))//"1234" length为5-1
console.log(str.substring(0,9),str)//"012345678" "0123456789"`
其中start是必填项,stop为选填项,如果stop不填,那表示从start截取到字符串结尾,例如
var str = "0123456789";
console.log(str.substring(1))//"123456789"
如果 start比stop大,那么方法在执行前会先交换这两个参数。例如:
var str = "0123456789";
console.log(str.substring(8,4))//"4567"
如果 start与stop相等,那么会返回一个空的字符串。例如:
var str = "0123456789";
console.log(str.substring(6,6))//""
如果 start或stop为负数,那么方法在执行前会先将负数变为0。例如
var str = "0123456789";
console.log(str.substring(-2,6))//"012345"
console.log(str.substring(2,-6))//"01"
console.log(str.substring(-2,-6))//""
substr() 只能操作字符串,不修改原字符串
substr(start,length)表示返回从start开始包含length长度的新字符串,包含start,且不修改原字符串,与substring相比,第二个参数由代表结束的下标stop变成了规定新字符串长度的length
var str = "0123456789";
console.log(str.substr(1,5))//"12345" length为5
console.log(str.substr(2,6),str)//"234567" "0123456789"
其中start是必填项,length为选填项,如果length不填,那表示从start截取到字符串结尾,例如
var str = "0123456789";
console.log(str.substr(1))//"123456789"
如果start为负数,那么start=str.length+start,例如:
var str = "0123456789";
console.log(str.substr(-1))//"9"
console.log(str.substr(-6,3))//"456"
如果length为负数或者0,那么返回空字符串,例如
var str = "0123456789";
console.log(str.substr(1,0))//""
console.log(str.substr(-1,-1))//""
console.log(str.substr(-1,0))//""
slice() 可操作数组和字符串,不修改原数组或字符串
首先要说的是,slice可操作数组和字符串,但substring和substr只能操作字符串,splice只能操作数组。
slice(start,stop)表示截取从下标start 到下标stop(不包括该元素)的之间的元素,并返回新数组/新字符串,并不修改原数组/原字符串,这点上面说了,与substring很相似
var str = "0123456789";
arr = [0,1,2,3,4,5,6,7,8,9];
console.log(str.slice(1,6))//"12345"
console.log(arr.slice(1,6))//[1,2,3,4,5]
其中start是必填项,stop为选填项,如果stop不填,那表示从start截取到数组结尾/字符串结尾,例如:
var str = "0123456789";
arr = [0,1,2,3,4,5,6,7,8,9];
console.log(str.slice(1))//"123456789"
console.log(arr.slice(1))//[1,2,3,4,5,6,7,8,9]
如果 start比stop大(不会互换),或start与stop相等,则截取的为空,例如
var str = "0123456789";
arr = [0,1,2,3,4,5,6,7,8,9];
console.log(str.slice(3,3))//""
console.log(arr.slice(3,3))//[]
console.log(str.slice(6,5))//""
console.log(arr.slice(6,5))//[]
需要特别注意的是,如果 start或者stop为负数,那么负数的选项从数组尾部开始算起的位置,最后一个数字为-1,倒数第二个数字为-2,依次类推。例如
var str = "0123456789";
console.log(str.slice(6,-1))//"678"
console.log(str.slice(-6,-1))//"45678"
console.log(str.slice(-6,8))//"4567"
splice() 只能操作数组,不能操作字符串,会改变原有数组
splice(start,length,items)表示从下标start处截取length长度(与substr有点像)的元素后,在start处为原数组添加items,并返回被截取的新数组,splice会直接修改原数组,例如
var arr = [0,1,2,3,4,5,6,7,8,9];
console.log(arr.splice(1,3,2,3,4))//[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 = [0,1,2,3,4,5,6,7,8,9];
console.log(arr.splice(1,0,2,3,4))//[]
console.log(arr);//[0,2,3,4,1,2,3,4,5,6,7,8,9] 直接在原数组下标0处并加入了2,3,4
var arr = [0,1,2,3,4,5,6,7,8,9];
console.log(arr.splice(1,-9,2,3,4))//[]
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 = [0,1,2,3,4,5,6,7,8,9];
console.log(arr.splice(-1,1,2,3,4))//[9]
console.log(arr);//[0,1,2,3,4,5,6,7,8,2,3,4] 从右往左截取1位,也就是9,并加入2,3,4
1、删除:只需指定2个参数:要删除的第一项的位置和要删除的项数。例如,splice(0, 2)会删除数组中的前两项。
2、插入:只需提供3个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如,splice(2, 0, “red”, “green”)会从当前数组的位置2开始插字符串"red"和"green"。
3、替换:只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项不必与删除的项相等。例如,splice(2, 1, “red”, “green”),会删除当前数组位置2的项,然后再从位置2开始插入字符串"red"和"green"。
上一篇: gcc程序获取对象类型名
推荐阅读
-
字符串slice、substring、substr
-
JavaScript中的split()、substr()、substring()以及slice()和splice()的用法区别
-
JavaScript 中的字符串切片操作(slice、substr、substring)
-
JS-字符串截取方法slice、substring、substr的区别
-
javascript中string对象方法中的slice、substring、substr的区别联系
-
JavaScript数组之傻傻分不清系列(split,splice,slice)
-
字符串查找,不使用indexOf,substr,正则,substring,contain,slice等现成的方法
-
字符串slice、substring、substr
-
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较_javascript技巧
-
splice 、 slice 、split傻傻分不清