其中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個字符;若第二個參數不寫,則默認是截取從開始位置到結束位置的所有字符。