【js】讓你一次性搞清楚slice,substr,substring字符串截取函數

假設 str是個字符串變量,且設置值爲"LittleAnn",字符長度是9
那麼這三個函數使用方式:

var str="LittleAnn";

str.slice(start,end);
str.substr(start,length);
str.substring(start,end);

相同點:

  1. start爲開始位置下標,end爲結束位置下標
  2. 下標從0開始計算
  3. 如果第3個參數不傳,默認從start截取到字符串最後,包含最後一個字符
  4. 函數名字全是小寫字母,容易讓人把substrsubstring寫成subStr,subString 導致報錯

不同點:

1.str.slice(start,end);
(1).2個參數中,如果存在負數將進行轉化:轉化後下標=負數+字符串總長度,即倒數第幾個
(2).正常截取需要end>start(如有負數,進行轉換後的),否則返回空字符串
(3).截取長度:end-start(如有負數,進行轉換後的),即截取到end的前一位,不包含end

例子1:通過str.slice(start.end)來截取 “Ann” ,有如下種方式:

var str="LittleAnn"; //字符長度是9
str.slice(-3); //"Ann",-3進行轉化,-3+9=6
str.slice(6)  //"Ann"

str.slice(-3,str.length); //"Ann" (-3+9,9)即(6,9)
str.slice(6,str.length); //"Ann"  (6,9)

例子2:通過str.slice(start.end)來截取 “Little” ,有如下種方式:

var str="LittleAnn";  //字符長度是9
str.slice(0,6);  //"Little"
str.slice(-str.length,6);  // "Little",下標即(-9+9,6),轉化爲的下標(0,6)

str.slice(0,-3)  //"Little",轉化後的下標(0,-3+9),爲(0,6)
str.slice(-str.length,-3);  //"Little",下標即爲(-9+9,-3+9),轉化後的下標(0,6)

2.str.substr(start,length);
(1)length代表要截取的字符個數
(2)start如果爲負數,要進行轉化,轉化後下標=負數+字符串總長度,即倒數第幾個
(3)length要大於0,否則爲空字符串

例子3:通過str.substr(start,length)來截取"Ann",有如下種方式:

var str="LittleAnn";  //字符長度是9
str.substr(6,3); //"Ann"
str.substr(-3,3); //"Ann",轉化後(-3+9,3)爲(6,3)

例子4:通過 str.substr(start,length) 來截取"Little",有如下種方式:

var str="LittleAnn"; //字符長度是9
str.substr(0,6);  //"Little"
str.substr(-9,6); //"Little",轉化後 (-9+9,6)即(0,6)

3.str.substring(start,end);
(1)start,end中,當參數有負數時,則變爲0
(2)從start和end(如有負數,是轉化後的),兩個參數中最小的參數開始截取到最大的參數下標,字符串不包含最大參數的下標
(3)截取長度:轉化後的end-start,即轉化後的最大值減去最小值下標

例子5:通過 str.substring(start,end) 來截取 “Ann”,有如下種方式:

var str="LittleAnn"; //字符長度是9
str.substring(6,str.length); //"Ann",(6,9)
str.substring(str.length,6);// "Ann",會從小的6到大的9去進行截取,(6,9)

例子6:通過 str.substring(start,end) 來截取 “Little” ,有如下種方式:

var str="LittleAnn"; //字符長度是9
str.substring(0,6); //"Little"
str.substring(6,0); //"Little" ,會從小0到大的6進行截取,(0,6)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章