天天看點

細究js字元串的三大截取方法:slice substring substrjs字元串的三大截取方法參數不合法時的處理

js三大字元串截取方法非法參數處理細究

  • js字元串的三大截取方法參數不合法時的處理
      • slice方法
      • subString方法
      • subStr方法
    • 下邊真的可以不看 -----
            • 想學習一些前端的書籍嗎,我都幫你整理好啦!評論打出你想讀的書,給你最全的筆記幹貨
            • 超級全的前端知識,面試必備、系統複習必備喲喲喲
    • 這次真的可以不看 -----

js字元串的三大截取方法參數不合法時的處理

在這裡插入代碼片js字元串的三大截取方法是slice、substring 和 substr,這三個方法的效果是從字元串中截取一定長度的子串出來,他們功能相似,但是用起來常常讓人摸不着頭腦。當參數合法時他們常常表現得很乖。當參數不合法時他們又是各有自己的處理方式,一些細節常常讓人達不到想要的效果。

slice方法

slice方法的參數有兩個,第一個是起始位置start,另一個是結束位置end。其中end是可選參數,可以省略。下面是在火狐中的一段代碼。從上往下一次解釋:

  1. 當start大于end時,傳回空。
  2. 當start等于end時,傳回空。
  3. 當start小于0時,傳回空。
  4. 當end為NaN時,傳回空。
  5. 當start為NaN時,設為0.
  6. 當end小于0 時,加長度。
  7. 當參數大于長度,設為長度。
var str = "abcdefghijklmn";
console.log(str.slice(5,1));
console.log(str.slice(2,2));
console.log(str.slice(-4,1));
console.log(str.slice(1,NaN));
console.log(str.slice(NaN,5));
console.log(str.slice(0,-1));
console.log(str.slice(1,20));
//結果




abcde 
abcdefghijklm
bcdefghijklmn
           

這是一個完全沒有規律可言的細節把握,筆者為了記憶編了一個順口溜:slice情況較複雜,大小颠倒相等空,開小閉非數也空。開非數他先設0,閉小0它隻加長度,參數大界設長度。 當然,小編也是記了很久,多數情況下要現場查。

subString方法

subString方法的參數與slice完全相同,有start和end。但是start處理非法參數時有試圖想要盡量了解使用者的輸入去做自己的處理。下面同樣是火狐處理的一些代碼結果。

  1. 若有NaN和負數,先設為0。
  2. 若有參數大于length,設為length。
  3. 若start大于end,颠倒參數。
console.log(str.substring(0,20));
console.log(str.substring(20,0));
console.log(str.substring(-1,5));
console.log(str.substring(NaN,5));
console.log(str.substring(5,0));

// 結果
abcdefghijklmn
abcdefghijklmn 
abcde 
abcde 
abcde
           

subString總是試圖将非法參數,即小于零或者NaN的參數轉換成合法參數0。将大于length的非法參數設為length。将不合理的參數,如start大于end的合法參數進行對換調整為合理參數。

subStr方法

subStr方法與上邊兩個方法的參數不同。這個方法的第一個參數時start,第二個參數時num,表示個截取個數。這個函數主要是第一個參數的處理.

  1. 當start小于0 ,加長度。
  2. 當start小于0,加長度依舊小于零,設為0.
  3. 當start為NaN,設為0 。
  4. 當start大于length,傳回空。
var str="abcdefghijklmn";
console.log(str.substr(-1,5));
console.log(str.substr(-20,5));
console.log(str.substr(NaN,5));
console.log(str.substr(20,5));

//結果
n
abcde 
abcde


           

下邊真的可以不看 -----

想學習一些前端的書籍嗎,我都幫你整理好啦!評論打出你想讀的書,給你最全的筆記幹貨

超級全的前端知識,面試必備、系統複習必備喲喲喲

有想法評論提出哈,歡迎交流,小編也是渣渣一枚呢~一起進步呗

這次真的可以不看 -----

點個收藏呗,要不贊一個呗,小編手都敲累了,但還是持續加更呢~

繼續閱讀