1. 程式人生 > 其它 >:傳遞給 left 或 substring 函式的長度引數無效。_javaScript中slice, substring,substr三者區別以及用法擴充套件...

:傳遞給 left 或 substring 函式的長度引數無效。_javaScript中slice, substring,substr三者區別以及用法擴充套件...

技術標籤::傳遞給 left 或 substring 函式的長度引數無效。

substr定義

substr() 方法可在字串中抽取從 開始 下標開始的指定數目的字元。
提示: substr() 的引數指定的是子串的開始位置和長度,因此它可以替代 substring() 和 slice() 來使用。
在 IE 4 中,引數 start 的值無效。在這個 BUG 中,start 規定的是第 0 個字元的位置。在之後的版本中,此 BUG 已被修正。
ECMAscript 沒有對該方法進行標準化,因此反對使用它。
注意: substr() 方法不會改變源字串。

substring定義

substring() 方法用於提取字串中介於兩個指定下標之間的字元。

擷取start(包括)到end(不包括)之間的字串

允許引數為負數(最後一位為-1)

注意:以兩個引數中較小一個作為起始位置,較大的引數作為結束位置

slice定義

slice(start, end) 方法可提取字串的某個部分,並以新的字串返回被提取的部分。

使用 start(包含) 和 end(不包含) 引數來指定字串提取的部分。

字串中第一個字元位置為 0, 第二個字元位置為 1, 以此類推。

提示: 如果是負數,則該引數規定的是從字串的尾部開始算起的位置。也就是說,-1 指字串的最後一個字元,-2 指倒數第二個字元,以此類推。

start的位置必須要在end之前,否則返回空。

substr與substring的區別與用法

首先,他們都接收兩個引數,substr接收的則是起始位置和所要返回的字串長度,而slice和substring接收的是起始位置和結束位置(不包括結束位置)。看下面例子:

var str ='welcome back';
console.log(str.substr(2,5));             //lcome
console.log(str.substring(2,5));         //lco
console.log(str.slice(2,5));            //lco

接著,當接收的引數是負數時,substr則僅僅是將第一個引數與字串長度相加後的結果作為第一個引數;substring則乾脆將負引數都直接轉換為0;slice會將它字串的長度與對應的負數相加,結果作為引數。程式碼如下:

var str ='welcome back';
console.log(str.substr(-3));         //ack
console.log(str.substring(-3));     //welcome back
console.log(str.slice(-3));        //ack

console.log(str.substr(3,-4));       //空字串
console.log(str.substring(3,-4));   //wel
console.log(str.slice(3,-4));      //come

注意:IE對substr接收負值的處理有錯,它會返回原始字串。

擴充套件

類陣列轉陣列:

77dee3efe8634f97f6c128f5c36ee5c5.png