js三大字元串截取方法非法參數處理細究
- js字元串的三大截取方法參數不合法時的處理
-
-
- slice方法
- subString方法
- subStr方法
- 下邊真的可以不看 -----
-
-
-
-
- 想學習一些前端的書籍嗎,我都幫你整理好啦!評論打出你想讀的書,給你最全的筆記幹貨
- 超級全的前端知識,面試必備、系統複習必備喲喲喲
-
-
-
- 這次真的可以不看 -----
-
js字元串的三大截取方法參數不合法時的處理
在這裡插入代碼片js字元串的三大截取方法是slice、substring 和 substr,這三個方法的效果是從字元串中截取一定長度的子串出來,他們功能相似,但是用起來常常讓人摸不着頭腦。當參數合法時他們常常表現得很乖。當參數不合法時他們又是各有自己的處理方式,一些細節常常讓人達不到想要的效果。
slice方法
slice方法的參數有兩個,第一個是起始位置start,另一個是結束位置end。其中end是可選參數,可以省略。下面是在火狐中的一段代碼。從上往下一次解釋:
- 當start大于end時,傳回空。
- 當start等于end時,傳回空。
- 當start小于0時,傳回空。
- 當end為NaN時,傳回空。
- 當start為NaN時,設為0.
- 當end小于0 時,加長度。
- 當參數大于長度,設為長度。
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處理非法參數時有試圖想要盡量了解使用者的輸入去做自己的處理。下面同樣是火狐處理的一些代碼結果。
- 若有NaN和負數,先設為0。
- 若有參數大于length,設為length。
- 若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,表示個截取個數。這個函數主要是第一個參數的處理.
- 當start小于0 ,加長度。
- 當start小于0,加長度依舊小于零,設為0.
- 當start為NaN,設為0 。
- 當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
下邊真的可以不看 -----
想學習一些前端的書籍嗎,我都幫你整理好啦!評論打出你想讀的書,給你最全的筆記幹貨
超級全的前端知識,面試必備、系統複習必備喲喲喲
有想法評論提出哈,歡迎交流,小編也是渣渣一枚呢~一起進步呗
這次真的可以不看 -----
點個收藏呗,要不贊一個呗,小編手都敲累了,但還是持續加更呢~