slice,substring,substr的區別

1.都爲正整數
//
例子數據 var arr = [1,2,3,4,5,6,7], var str = "helloworld!"; //注意這裏有個!號也算一位如有空格,空格也算一位 console.log(str.slice(1)); //elloworld! console.log(str.substring(1)); //elloworld! console.log(str.substr(1)); //elloworld! console.log(arr.slice(1)); //[2,3,4,5,6,7] console.log(arr.substr(1)); //TypeError: arr.substr is not a function console.log(arr.substring(1)); //TypeError: arr.substring is not a function 數組是沒有substr和substring方法的,含str的都是字符串專用

2.都是正整數第一個小於第二個javascript

//例子不變
console.log(str.slice(1,4));  //ell 不包含結束位1起始位,4結束位
console.log(str.substring(1,4));  //ell 不包含結束位1起始位,4結束位
console.log(str.substr(1,4)); //ello  不一致了!!! 
 
console.log(arr.slice(1,4)); //[2,3,4]  不包含結束位1起始位,4結束位

  

3. 都使用兩個正數參數(第一個大於第二個):
var arr = [1,2,3,4,5,6,7],
var  str = "helloworld!";
console.log(str.slice(5,1));  //""
console.log(str.substring(5,1));  //ello
console.log(str.substr(5,1));  //"w"
 
console.log(arr.slice(5,1));  //[]

  substring會將此狀況的位置自動調換,而後截取出相應的值;substr固然按照原意從第5個位置開始,截取1位返回一個字符;而slice直接返回空,slice的第一參數必需要小於等於第二參數纔有效java

4。前正後負數組

var arr = [1,2,3,4,5,6,7],
var str = "helloworld!";
console.log(str.slice(1,-2)); //elloworl
console.log(str.substr(1,-2));  //""
console.log(str.substring(1,-2));  //h
 
console.log(arr.slice(1,-2)); //[ 2, 3, 4, 5]

slice第二參數爲負數時,是從尾部倒數來計算或者說是與字符串或數組的長度相加得出的結果來計算;而substring, 不管第二參數是負多少,都只截取了第一個字符;substr一樣,個數不多是負數,因此是空;總結substring和substr第二參數爲負數時實際上是無效果的。學習

5.前負後正spa

//例子不變
console.log(str.slice(-3,1))  //""
console.log(str.substr(-3,1))  //l
console.log(str.substring(-3,1))  //h
 
console.log(arr.slice(-3,1))  //[]

slice結果是空,這個結合第3和第4種狀況,可知,這個實際是slice(4,1),第一參數大於第二參數了,因此是無效的,空值;substring,結合第3和第4種狀況,是調換了順序,可是仍是負數,依然也是無效的,只返回第一個字符;substr,第一參數負數一樣表明從尾部倒數或者字符串的長度相加得出的結果來計算,等同於substr(8,1),截取栗子中的一位,獲得了「l」。
6.全爲負數code

//例子不變
console.log(str.slice(-1,-5));
console.log(str.substr(-1,-5));
console.log(str.substring(-1,-5));
 
console.log(arr.slice(-1,-5));
//上面的結果全是空
        
console.log(str.slice(-5,-1)); //orld
console.log(str.substr(-5,-1)); //""
console.log(str.substring(-5,-1)); //""
 
console.log(arr.slice(-5,-1)); //[ 3, 4, 5, 6 ]

總結:blog

1.slice,substring,substr 都是用來截取字符串的,然而數組只能使用slice,這三者若是不傳參數,則都返回所有內容;ip

2.  參數爲正數時,只有substring會自動調換順序,slice在第一參數大於第二參數時會無效返回空,而substr無所謂,除非給定的第一參數超出了源數據長度纔會返回空;字符串

3. 參數爲負數時,只有substring會永遠無效,即不要給substring使用負值!slice可認爲從尾部倒數,或者直接用源數據長度加上這個負值換算爲正數,而後結論依然遵循第2條所述;而substr,則只適用第一參數爲負數,換算方法同slice,其第二參數表明截取的個數,是不能爲負數的;博客

以上內容經過我的學習,博客項目學習,w3c總結,望各位大神多多指點,謝謝!

相關文章
相關標籤/搜索