您的位置:首页 > Web前端 > JavaScript

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

2018-03-30 16:43 741 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: