substring、substr以及slice、splice用法和区别
關(guān)于substring()
substring(start,stop)表示返回從start開始到stop處之間的新字符串,其長(zhǎng)度為stop減 start。
特點(diǎn):
- 包含start,但不包含stop
- 且不修改原字符串,返回新字符串
這一點(diǎn)與slice的含頭不含尾相近。例如:
var str = "0123456789"; console.log(str.substring(1,5))//"1234" length為5-1 console.log(str.substring(0,9),str)//"012345678" "0123456789"其中start是必填項(xiàng),stop為選填項(xiàng),如果stop不填,那表示從start截取到字符串結(jié)尾,例如:
var str = "0123456789"; console.log(str.substring(1))//"123456789"如果 start比stop大,那么方法在執(zhí)行前會(huì)先交換這兩個(gè)參數(shù)。例如:
var str = "0123456789"; console.log(str.substring(8,4))//"4567"如果 start與stop相等,那么會(huì)返回一個(gè)空的字符串。例如:
var str = "0123456789"; console.log(str.substring(6,6))//""如果 start或stop為負(fù)數(shù),那么方法在執(zhí)行前會(huì)先將負(fù)數(shù)變?yōu)?。例如:
var str = "0123456789"; console.log(str.substring(-2,6))//"012345" console.log(str.substring(2,-6))//"01" console.log(str.substring(-2,-6))//""關(guān)于substr()
substr(start,length)表示返回從start開始包含length長(zhǎng)度的新字符串,
特點(diǎn):
- 包含start,
- 且不修改原字符串,返回新字符串
- 與substring相比,第二個(gè)參數(shù)由代表結(jié)束的下標(biāo)stop變成了規(guī)定新字符串長(zhǎng)度的length
例如:
var str = "0123456789"; console.log(str.substr(1,5))//"12345" length為5 console.log(str.substr(2,6),str)//"234567" "0123456789"其中start是必填項(xiàng),length為選填項(xiàng),如果length不填,那表示從start截取到字符串結(jié)尾,例如:
var str = "0123456789"; console.log(str.substr(1))//"123456789"如果start為負(fù)數(shù),那么start=str.length+start,例如:
var str = "0123456789"; console.log(str.substr(-1))//"9" console.log(str.substr(-6,3))//"456"如果length為負(fù)數(shù)或者0,那么返回空字符串,例如:
var str = "0123456789"; console.log(str.substr(1,0))//"" console.log(str.substr(-1,-1))//"" console.log(str.substr(-1,0))//""slice()
slice可操作數(shù)組和字符串,但substring和substr只能操作字符串,splice只能操作數(shù)組。
slice(start,stop)表示截取從下標(biāo)start 到下標(biāo)stop(不包括該元素)的之間的元素,并返回新數(shù)組/新字符串,并不修改原數(shù)組/原字符串,與substring很相似。
特點(diǎn):
- 包含start,但不包含stop
- 不修改原數(shù)組/原字符串,返回新數(shù)組/新字符串
例如:
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是必填項(xiàng),stop為選填項(xiàng),如果stop不填,那表示從start截取到數(shù)組結(jié)尾/字符串結(jié)尾,例如:
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大(不會(huì)互換),或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為負(fù)數(shù),那么負(fù)數(shù)的選項(xiàng)從數(shù)組尾部開始算起的位置,最后一個(gè)數(shù)字為-1,倒數(shù)第二個(gè)數(shù)字為-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"關(guān)于splice()
splice(start,length,items)表示從下標(biāo)start處截取length長(zhǎng)度(與substr有點(diǎn)像)的元素后,在start處為原數(shù)組添加items,并返回被截取的新數(shù)組,splice會(huì)直接修改原數(shù)組,例如:
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] 原數(shù)組被截取走了1,2,3,并加入了2,3,4其中start和length為必填項(xiàng),items為選填項(xiàng),如果length為0或者負(fù)數(shù),則返回空數(shù)組(這里與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] 直接在原數(shù)組下標(biāo)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] 直接在原數(shù)組下標(biāo)0處并加入了2,3,4如果start為負(fù)數(shù),則原理和slice負(fù)數(shù)從右往左截取,最后一位數(shù)字為-1,倒數(shù)第二位為-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總結(jié)
以上是生活随笔為你收集整理的substring、substr以及slice、splice用法和区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何解决两个相邻的span中间空隙
- 下一篇: Object.create()方法