JS里slice(), splice(), split(), substr(), substring()的区别及其使用方法


1、slice()

定义 返回从数组中选定的元素
使用范围 Array 和 String
语法 obj.slice(start, end)
参数

start:必需。规定从数组(字符串)的哪个index(从0开始)开始选取。

           如果是负数,则从数组(字符串)尾部算index,比如,-1指最后一个元素,-2指倒数第二个元素,以此类推。

end:可选。规定到哪个index之前结束(不包括end)。

          如果没有指定该参数,那么切分的数组(字符串)包含从start到数组(字符串)结束的所有元素。

          如果这个参数是负数,那么它规定的是从数组(字符串)尾部开始算起的元素。

返回值 返回一个新的数组(字符串),包含从start到end(不包含改元素)的obj中的元素。
该方法并不会修改数组(字符串),而是返回一个子数组(子串)

实例分析

  • Array
var arr = [151, 1, 10, 58, 999, 100000];
			
document.write(arr.slice(0)+"</br>");		//输出:151,1,10
			
document.write(arr.slice(1,3)+"</br>");		//输出:1,10

document.write(arr.slice(1,-1)+"</br>");	//输出:1, 10, 58, 999

document.write(arr.slice(-3,-1)+"</br>");	//输出:58, 999

document.write(arr.slice(-3)+"</br>");		//输出:58, 999, 100000
			
document.write(arr.slice(-1)+"</br>");		//输出:100000
说明: obj.slice(start, end);  含首不含尾:start开始,end之前结束;当参数为负数时,在右边从-1开始往前数。
  • String
var str = "abcdefghijk";
			
document.write(str.slice(0)+"</br>");		//输出:abcdefghijk
			
document.write(str.slice(1,5)+"</br>");		//输出:bcde
			
document.write(str.slice(1,-3)+"</br>");	//输出:bcdefgh
			
document.write(str.slice(-5));		        //输出:ghijk


2、splice()

定义 向/从数组中添加/删除项目,然后返回被删除的项目。(该方法会改变原始数组
使用范围 Array
语法 arrayObject.splice(index, howmany, ite1,......, itemxX)
参数

index: 必需。正数,规定添加/删除项目的index,使用负数可从数组结尾处规定位置。

howmany: 必需。要删除的项目数量。如果设置为0,则不会删除项目(添加)。

item1, ..., itemX: 可选。向数组添加的新元素。

返回值 Array: 包含被删除项目的新数组,如果有的话。
说明

splice()方法可删除从Index处开始的零个或者多个元素,

并且用参数列表中声明的一个或者多个值来替换那些被删除的元素。

如果从arrayObject中删除了元素,则返回的是包含被删除的元素的数组。

实例分析

  • 例1 :从数组中删除元素,并返回删除元素。
var arr = ["banana", "apple", "orange", "tomato"];
			
document.write(arr.splice(0, 3)+"</br>");	//输出:banana,apple,orange (删除了前3项,并返回删除元素)
			
document.write(arr);	                        //输出:tomato(剩余项)
  • 例2:向数组中添加元素(无返回值)。
var arr = ["banana", "apple", "orange", "tomato"];
			
arr.splice(1,0,"pear","strawberry")	//在index=1之后添加了两个元素(没有返回值)
			
document.write(arr);		//输出:banana,pear,strawberry,apple,orange,tomato

  • 例3:替换数组中的元素(删除后添加)。
var arr = ["banana", "apple", "orange", "tomato"];
			
arr.splice(1,2,"pear","strawberry")	//替换原数组中的元素(删除了2项,再添加项)
			
document.write(arr);		//输出:banana,pear,strawberry,tomato


3、split()

定义 用于把一个字符串分割成字符串数组
使用范围 String
语法 stringObject.split(seperator, howmany)
参数

seperator: 必需。字符串或者正则表达式,从该参数指定的地方分割stringObject。

howmany: 可选。该参数可指定返回的数组的最大长度。

                如果设置了该参数,返回的子串不会多于这个参数指定的数组。

                如果没有设置改参数,整个字符串都会被分割,不考虑它的长度。

返回值

一个字符串数组。该数组是在separator指定的边界处将字符串stringObject分割成子串创建的。

返回的数组中的子串不包括seperator自身。但是,如果seperator是包含子表达式的正则表达式,

那么返回的数组中包括与这些子表达式匹配的字符串(但不包括与整个正则表达式匹配的文本)。

说明

如果把空字符串('')用作seperator,那么stringObject中的每个字符之间都会被分割;

String.split()执行的操作与Array.join执行的操作是相反的。(join()把把字符串数组转化成字符串)

实例说明

  • 例1:空字符分割字符串成字符串数组。
var str1 = "Hello world, I am in China";
			
var str2 = "Can I help you";
			
var str3 = "abcdefg";
			
document.write(str1.split(",")+"</br>");    //输出:['Hello world', ' I am in China'] (在“,”处分割字符串成字符串组)
			
document.write(str1.split(" ")+"</br>");    //输出:['Hello', 'world', '', 'I', 'am', 'in', 'China'] (在空格处分割)
			
document.write(str2.split("")+"</br>");	    //输出:['C', 'a', 'n', ' ', 'I', ' ', 'h', 'e', 'l', 'p', ' ', 'y', 'o', 'u'] 
			
document.write(str3.split("")+"</br>");	    //输出:['a', 'b', 'c', 'd', 'e', 'f', 'g']	


4、substring()

定义 提取字符串中介于两个指定index之间的字符
使用范围 String
语法 stringObject.substring(start, stop)
参数 start:必需。一个非负的正数,提取字符串开始的index。

stop:可选。一个非负的正数,提取字符串结束的index+1。提取从start开始至stop之前的字符串元素。(含首不含尾)

           如果省略该参数,那么返回的子串会一直到字符串的结尾。

返回值

一个新的字符串,该字符串值包含stringObject的一个子字符串,

其内容是从start处到stop-1处的所有字符,其长度为stop减start。

说明

substring()方法返回的子串包括start处的字符,但不包括stop处的字符。

如果stop和start相等,返回的是一个空串。

如果start比stop大,那么该方法在提取子串之前会先交换这两个参数。

与slice()和substr()不同的是,substring()不接受负的参数。

实例说明

  • 例1:
var str = "hello world";
			
document.write(str.substring(3)+"</br>");		//输出:lo world (包括空格符)
			
document.write(str.substring(3,9)+"</br>");		//输出:lo wor
			
document.write(str.substring(9,3));			//输出:lo wor


5、substr()

定义 在字符串中抽取从start下表开始的指定书目的字符。
使用范围 String
语法 stringObject.substr(start, length)
参数

start:必需。要抽取的子串的其实下表。必需是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。

          也就是说,-1指字符串中最后一个字符,-2指倒数第二个字符,以此类推。

length:可选。字串中的字符数,必须是数值,如果省略了该参数,那么返回从stringObject的开始位置到结束的字符串。

返回值 一个新的字符串,包含从stringObject的start处开始的length个字符。
说明

substr()的参数指定的是子串的开始位置和长度,因此它可以替代substring()和slice()来使用。

ECMAscript中没有对该方法进行标准化,因此反对使用。

实例说明

  • 例1
var str = "hello world";
			
document.write(str.substr(1,7)+"</br>");		//输出:ello wo
			
document.write(str.substr(3)+"</br>");			//输出:lo world
			
document.write(str.substr(-3,5)+"</br>");		//输出:rld (length大于可抽取的字符)


总结

        slice(strat, end)、substr(start, length)、substring(start, stop) 这三个方法都可以用于提取字符串,slice()还可以用于提取数组元素且参数可为负数;substr()相比于substring()不同点在于参数,substr()也可以使用负数;split()用于把字符串分割成字符串数组;splice()用于添加/删除字符串。


------------------------------------------------- end ------------------------------------------------------


参考文章:https://www.cnblogs.com/WananPr1st/p/6451501.html

猜你喜欢

转载自blog.csdn.net/mr_javascript/article/details/79753483