天天看點

字元串方法整理

字元串方法

  • 字元串切割
    • slice
      • strObj.slice(start[,end])
      • 參數為負,将它作為length+end處理,此處length為字元串的長度。 
      • str.slice(-2)可以取字元串後兩位
    • substring
      • strObj.substring(start[,end])
      •  substring方法使用start和end兩者中的較小值作為子字元串的起始點。
      • 如果start或end為NaN或者為負數,那麼将其替換為0。 
      • 兩個參數不确定是起始位置還是結束位置時使用
    • substr
      • strObj.substr(start[,length])
      • 如果start為負,将它作為length+start處理,此處length為字元串的長度。
      • 傳回一個從指定位置開始的指定長度的子字元串。 
      • str.substr(-2)可以取字元串後兩位
  • 字元串分割(字元串轉數組)
    • split
      • strObj.split([separator[,limit]]) 
      • separator字元串或 正規表達式 對象,它辨別了分隔字元串時使用的是一個還是多個字元。如果忽略該選項,傳回包含整個字元串的單一進制素數組。 
      • limit該值用來限制傳回數組中的元素個數。
      • var str = "AA BB CC DD EE FF";
      • alert(str.split(" ",3));
      • 結果:
      • AA,BB,CC
  • 子串識别

    注意:如果向 startsWith() 、 endsWith() 或 includes() 方法傳入了正規表達式而不是字元串,會抛出錯誤。而對于indexOf()和lastIndexOf()這兩個方法,它們會将正規表達式轉換為字元串并搜尋它。若需要找到它們在字元串中的确切位置,則需要使用 indexOf() 和 lastIndexOf() 。

    • includes (es6)
      • 該方法在給定文本存在于字元串中的任意位置時會傳回 true ,否則傳回false。
      • 接受兩個參數:需要搜尋的文本,以及可選的搜尋起始位置索引
    • startsWith (es6)
      • 該方法在給定文本出現在字元串起始處時傳回 true ,否則傳回 false
      • 接受兩個參數:需要搜尋的文本,以及可選的搜尋起始位置索引
    • endsWith (es6)
      • 該方法在給定文本出現在字元串結尾處時傳回 true ,否則傳回 false 
      • 接受兩個參數:需要搜尋的文本,以及可選的搜尋起始位置索引
    • indexOf
      • strObj.indexOf(substr[,startIndex]) 
      • 傳回String對象内第一次出現子字元串位置。沒有找到子字元串,則傳回-1。 
      • var str = "ABCDECDFG";
      • str.indexOf("CD",1); // 由1位置從左向右查找 12,23...
      • 結果:2
    • lastIndexOf
      • strObj.lastIndexOf(substr[,startindex]) 
      • 傳回String對象中字元串最後出現的位置。沒有找到子字元串,則傳回-1。 
      • var str = "ABCDECDFG";
      • str.lastIndexOf("CD",7); // 由7位置從右向左查找 67, 56...
      • 結果:5
    • search
      • 參數為字元串或者正規表達式
      • 傳回比對的第一個字元串的位置(就算是帶g全局标志也是傳回比對的第一個字元串的位置)
  • 字元串重複
    • repeat(es6)
      • 接受一個參數作為字元串的重複次數,傳回一個将初始字元串重複指定次數的新字元串
      • 參數如果是小數,會被取整(向下取整,等同floor)

        console.log('na'.repeat(2.9)); // "nana"

      • 如果repeat的參數是負數或者Infinity,會報錯

        //Uncaught RangeError: Invalid count value

        console.log('na'.repeat(Infinity));

        //Uncaught RangeError: Invalid count value

        console.log('na'.repeat(-1));

      • 如果參數是0到-1之間的小數,則等同于0,這是因為會先進行取整運算。0到-1之間的小數,取整以後等于-0,repeat視同為0

        console.log('na'.repeat(-0.9)); // ""

      • 參數NaN等同于0

        console.log('na'.repeat(NaN)); // ""

      • 如果repeat的參數是字元串,則會先轉換成數字

        console.log('na'.repeat('na')); // ""

        console.log('na'.repeat('3')); // "nanana"

      • 應用:縮進級别
  • 字元串補全
    • padStart(es8)和padEnd(es8)
      • 接受兩個參數,第一個參數用來指定字元串的最小長度,第二個參數是用來補全的字元串

        'x'.padStart(5, 'ab') // 'ababx'

        'x'.padStart(4, 'ab') // 'abax'

        'x'.padEnd(5, 'ab') // 'xabab'

        'x'.padEnd(4, 'ab') // 'xaba'

      • 如果省略第二個參數,預設使用空格補全長度

        'x'.padStart(4) // ' x'

        'x'.padEnd(4) // 'x '

      • 如果原字元串的長度,等于或大于指定的最小長度,則傳回原字元串

        'xxx'.padStart(2, 'ab') // 'xxx'

        'xxx'.padEnd(2, 'ab') // 'xxx'

      • 如果用來補全的字元串與原字元串,兩者的長度之和超過了指定的最小長度,則會截去超出位數的補全字元串

        'abc'.padStart(10, '0123456789')// '0123456abc'

      • 應用
        • 補全指定位數

          '1'.padStart(10, '0') // "0000000001"

          '12'.padStart(10, '0') // "0000000012"

          '123456'.padStart(10, '0') // "0000123456"

        • 提示字元串格式

          '12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"

          '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

字元串方法整理