js substr,slice,substring 的用法與區別

slice,substring,substr三個函數都是截取字符串。javascript

先看方法的簽名java

slice(start, end); // 參數可爲負數。第二個參數是指定結束位置。
substring(start, end); // 參數爲負數被替換成0。交換參數位置,小的在前。第二個參數是指定結束位置。
substr(start, length); // 參數可爲負數。第二個參數是指定截取長度。

從簽名能夠看出 substr 和其餘兩個的差異,substr第二個參數指定截取的長度,slice和substirng第二個參數指定截取的結束位置, 例:函數

var s = 'helloworld';
a.substr(2, 5); // 'llowo'
a.slice(2, 5); // 'llo'
a.substring(2, 5) // 'llo'

slice和substring的差異在於slice的參數能夠是負數,而substring不行。code

slice中的start若是爲負數,會從尾部算起,-1表示倒數第一個,-2表示倒數第2個,此時end必須爲負數,而且是大於start的負數,不然返回空字符串。slice的end若是爲負數,一樣從尾部算起,若是其絕對值超過原字符串長度或者爲0,返回空字符串。ip

substring會取start和end中較小的值爲start,兩者相等返回空字符串,任何一個參數爲負數被替換爲0(即該值會成爲start參數)。字符串

// substring會取start和end中較小的值爲start
s.substring(3, 2); // 'l'
s.substring(2, 3); // 'l'

// 兩者相等返回空字符串
s.substring(3,3); // ''

// 任何一個參數爲負數被替換爲0, 至關於 s.substring(0, 2);
s.substring(-1, 2); // 'he'
// 至關於 s.substring(0, 0);
s.substring(-1, -2); // ''

substr的參也能夠爲負數,當第一個參數爲負數時,會從尾部算起,-1表示倒數第一個,-2表示倒數第2個...。第二個爲負值是始終返回控制符串。string

s.substr(-2, 1); // 'l'
s.substr(-2, 0); // ''
s.substr(-2, -1); // ''

// 第一個參數爲負數時,絕對值大於字符串長度時替換爲0
s.substr(-10, 2); // 'he'
相關文章
相關標籤/搜索