substring和substr以及slice和splice的用法和區別
阿新 • • 發佈:2021-09-16
一、關於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擷取到字串結尾,例如:
如果 start比stop大,那麼方法在執行前會先交換這兩個引數。例如:var str = "0123456789"; console.log(str.substring(1))//"123456789"
var str = "0123456789";
console.log(str.substring(8,4))//"4567"
如果 start與stop相等,那麼會返回一個空的字串。例如:
var str = "0123456789";
console.log(str.substring(6,6))//""
如果 start或stop為負數,那麼方法在執行前會先將負數變為0。例如:
二、關於substr() substr(start,length)表示返回從start開始包含length長度的新字串,包含start,且不修改原字串,與substring相比,第二個引數由代表結束的下標stop變成了規定新字串長度的length,例如:var str = "0123456789"; console.log(str.substring(-2,6))//"012345" console.log(str.substring(2,-6))//"01" console.log(str.substring(-2,-6))//""
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擷取到字串結尾,例如:
如果start為負數,那麼start=str.length+start,例如:var str = "0123456789"; console.log(str.substr(1))//"123456789"
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(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
- substring和substr都是對字串進行擷取操作
- splice()只能運算元組
- slice()可運算元組和字串