javascript中splice()、substring()、substr()三個函數的區別聯繫

其中slice()、substring()都接收2個參數,分別爲在字符串的起始位置和終止位置,返回這2者之間的子字符串,不包括終止位置的那個字符。即接收2個參數,包前不包後。

如果第二個參數不設置,則默認爲字符串的長度,即從起始位置到結束位置。例如:

var str = "abcd西漢姆efg南懷瑾";

一、substring()與slice()函數的比較

   //情景一:二個參數,從開始位置到結束位置(不包括結束位置)

   //表示截取字符串從【開始位置】0到【結束位置,並且不包含結束位置】3的結果是:abc

   var str1 = str.slice(0, 3);  

   //表示截取字符串從【開始位置】0到【結束位置,並且不包含結束位置】3的結果是:abc

   var str2 = str.substring(0,3);

   //情景二:一個參數,從開始位置一直到整個字符串

   //表示截取字符串從【開始位置】3到【整個字符長度】str.length的結果是:d西漢姆efg南懷瑾

   var str1 = str.slice(3);      //d西漢姆efg南懷瑾

   //表示截取字符串從【開始位置】3到【整個字符長度】str.length的結果是:d西漢姆efg南懷瑾

   var str2 = str.substring(3);   //d西漢姆efg南懷瑾

   //情景三:二個參數,第一個參數大於第二個參數(包含第二個參數爲負數)

   var str3 = str.slice(3, -2);      //d西漢姆efg南

   var str4 = str.substring(3,-2);   //abc


結論:對於substring與slice函數的區別主要是對於參數爲負數的情況。

負參數對於slice()來說,是從字符串的末尾往前計數;

對於substring()而言,直接忽略負參數,作爲0來處理。並將2個參數中較小的作爲起始位置,將較大的作爲結束位置。

即str.substring(3,-2)等價於str.substring(3,0),等價於str.substring(0,3);


二、substring()與substr()函數的比較

   var str5 = str.substr(3,-2);   //結果爲空

   var str6 = str.substr(3,0);   //結果爲空

   var str7 = str.substr(3,2);   //d西

   var str8 = str.substr(3);   //d西漢姆efg南懷瑾


通過上面的結果可以看到substr()指的是從開始位置截取指定個長度的字符,如果第二個參數小於1,則表示截取0個字符;若第二個參數不寫,則默認是截取從開始位置到結束位置的所有字符。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章