面試中不要在字符串截取方法上”萎了”

字符串是一種包裝對象類型,只要引用了其方法或屬性,JavaScript就會將字符串值val通過調(diào)用new String(val)的方法轉換城對象,那么這個對象繼承了字符串的方法,一旦方法使用結束之后,這個新創(chuàng)建的對象就會被銷毀;

一 slice 方法

  • str.slice(strat, end);
    起始下標 <= 截取的范圍 < 結束下標
    包括起始下標對應的字符,but不包括
    結束下標;
1. 當只傳一個參數(shù)的時候:默認為start
var str = 'hello world'; 
str.slice(2);  // llo world

截取的字符串為:start <= 截取范圍 < str.length

   當參數(shù)是負數(shù)的時候
var str = 'hello world'; 
str.slice(-2);  // ld

結果為:反向下標截取
反向的下標 <= 截取范圍 < str.length
當反向下標的絕對值大于或等于字符串長度,則會置為0

 2. 當傳兩個參數(shù)的時候
    var str = 'hello world'; 
    str.slice(2,7);  // llo w

截取的字符串為:start <= 截取范圍 < end

      當參數(shù)是負數(shù)的時候
var str = 'hello world'; 
str.slice(-5,9);  // wor

截取從反向下標到設置的結束下標的位置,如果設置的結束下標的位置在開始下標的前面,會截取出空

var str = 'hello world'; 
str.slice(-3,5);  // 

二 substring方法

  • str.substring(start, end);
    起始下標 <= 截取的范圍 < 結束下標
    包括起始下標對應字符,but不包括結束下標;
 1.當只傳一個參數(shù)的時候:默認為start
var str = 'hello world'; 
str.substring(2);  // llo world

截取的字符串為: start<= 截取范圍 < str.length

當參數(shù)為負數(shù)時
// 例子:
var str = 'hello world'; 
str.substring(-2);  // hello world

負數(shù)的起始值置0

2.當傳兩個參數(shù)的時候
var str = 'hello world'; 
str.substring(2,7);  // llo w

var str = 'hello world'; 
str.substring(2,-5);  // he

當結束下標為負數(shù)則置為0,然后與起始下標互換位置,起始下標正數(shù)搖身一變成為了結束下標,截取的方向依然從左往右;
截取的字符串為: start <= 截取范圍 < end

三 substr 方法

  • str.substr(start, end);
    起始下標 <= 截取的范圍 <= 自定義截取的長度
    substr方法更直接(直接定義長度);
 1.當只傳一個參數(shù)的時候:默認為start
var str = 'hello world'; 
console.log(str.substr(2));  // llo world

var str = 'hello world'; 
console.log(str.substr(-2));  // ld

和前面一樣,從反向下標開始截取到字符串結尾
截取的字符串為: start <= 截取范圍 < str.length

2.當傳兩個參數(shù)的時候
var str = 'hello world'; 
console.log(str.substr(2,3));  // llo

var str = 'hello world'; 
console.log(str.substr(-2,5));  // ld
console.log(str.substr(-9,5));  // llo w

截取的字符串為: start <= 截取范圍 <= 自定義截取的長度
第二個參數(shù)是要截取的長度,所以不可以是負數(shù);
當截取的長度設置為0或者是負數(shù)的時候則返回空字符串;

總結:
  1. Slice
    a) 注意截取順序: 從左至右
    b) 結束下標出現(xiàn)在起始下標左側則返回空字符串
  2. Substring
    a) 負數(shù)下標會置零,
    b) start為正數(shù),end為負數(shù),end置零后會與start互換位置
  3. Substr
    a) 長度不能為負數(shù)
    b) Start可為負數(shù),可參考slice方法start為負數(shù)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容