JavaScript字串API彙總

星夢花隨0823發表於2018-11-25

訪問字串中指定位置的字元的方法

  • charAt():返回指定位置的字元
  • charCodeAt():返回指定位置的字元的字元編碼
  • 通過方括號加字元索引。 注意:IE7以及更早的版本不支援
    var str = 'abcd1234'
    console.log(str.charAt(2))      // 'c'
    console.log(str.charCodeAt(2))  // 99
    console.log(str[2])             // 'c'
    複製程式碼

拼接字串的方法

  • concat():專門用來拼接字串的方法,該方法可以接受任意多個引數,返回拼接得到的新字串
  • 通過加號操作符'+'
    var str = 'ab'
    console.log(str.concat('123'))         // 'ab123'
    console.log(str.concat('123', 'cd'))   // 'ab123cd'
    console.log(str + '123')               // 'ab123'
    console.log(str + '123' + 'cd')        // 'ab123cd'
    複製程式碼

擷取字串的方法

  • slice()substring(),兩個方法的傳參都是索引值。注意:含頭不含尾
  • substr():傳參中的第一個引數和slice()方法一樣,而第二個引數是要擷取字串的個數
  • 傳參中有負數的情況
    • slice():傳入的負值與字串的長度相加,傳參不合法(第二個引數大於第一個引數),返回空字串
    • substring():將所有負值引數都轉換為0,傳參不合法(第二個引數大於第一個引數),會自動替換兩個引數的位置
    • substr():將第一個傳入的負值與字串的長度相加,而第二個負值轉換為0
    // Base
    var str = 'bcd1234efg'
    console.log(str.slice(0,3));        // 'bcd'    引數為起始位置和結束位置
    console.log(str.slice(-3,-1));      // 'ef'     當出現負值時,兩個引數均為負值和字串長度相加
    console.log(str.slice(-1,-3));      // ''       第二個引數小於第一個引數時,返回空
    console.log(str.substr(2,2));       // 'd1'     第一個引數為起始位置,第二個引數為字串的個數
    console.log(str.substr(-3,-2));     // ''       當引數為負數時,第一個引數加上字串的長度,第二個引數變為0
    console.log(str.substring(3,5));    // '12'     引數為起始位置和結束位置
    console.log(str.substring(-3,-2));  // ''       當引數為負數時,兩個引數都變成0
    console.log(str.substring(3,-3));   // 'bcd'    當第二個引數小於第一個引數時,交換位置
    
    // More
    var str1 = 'abcdefghijklmn'
    var len = str1.length   // 14
    console.log(str.slice(8, -9))      // 傳參不合法,返回空字串 ''
    // 上述程式碼等同於  (-9) + 14 = 5
    console.log(str.slice(8, 5))       // 傳參不合法,返回空字串 '' 
    
    console.log(str.substring(8, -9))  // 'abcdefgh'
    // 上述程式碼等同於
    console.log(str.substring(8, 0))   // 'abcdefgh' 傳參不合法,替換兩引數的位置
    // 上述程式碼再次等同於
    console.log(str.substring(0, 8))   // 'abcdefgh'
    複製程式碼

獲取字串中特定字元的位置的方法

  • indexOf()lastIndexOf()與陣列的相似
  • 注意
    • 前者從前往後搜尋,後者從後往前搜尋
    • 第二個引數指定從字串的哪個位置開始搜尋

字串大小寫轉換

  • toLowerCase()toUpperCase()是兩個經典的方法
  • toLocaleLowerCase()toLocaleUpperCase()是針對特定地區的

字串模式匹配

  • match()

    • 接受一個正則作為引數,用來匹配一個字串,它的輸出結果在不是全域性匹配的情況下和exec方法的結果一致即一個陣列並帶有額外的屬性,如果採用全域性匹配,則不返回任何和其被匹配字串相關的資訊,只返回匹配的結果。
    • 非全域性匹配
      var reg2=/(\w)s(\w)/
      var str2="ws1estqsa"
      var result=str2.match(reg2)
      console.log(result) // 結果如下,此時的str2.match(reg2) 和 reg2.exec(str2) 的結果是一樣的
      複製程式碼

    JavaScript字串API彙總

    • 全域性匹配
      var reg2=/(\w)s(\w)/g
      var str2="ws1estqsa"
      var result=str2.match(reg2)
      console.log(result) // 結果如下,此時的str2.match(reg2)是所有結果組成的陣列,而 reg2.exec(str2)是匹配到的n個陣列,其中每個陣列包括的詳細資訊和非全域性匹配的資訊一樣
      複製程式碼

    JavaScript字串API彙總

  • search()

    • 用來查詢第一次匹配的子字串的位置,如果找到就返回一個number型別的index值,否則返回-1,它返回的只是第一次匹配的位置。它接受一個正則或者子字串為引數
      var str="hellO world"
      console.log(str.search('o'))      // 7
      console.log(str.search(/o/g))     // 7
      console.log(str.search(/o/gi))    // 4
      複製程式碼
  • replace()

    • 用來將字串中的某些子串替換為需要的內容,接受兩個引數,第一個引數可以為正則或者子字串,表示匹配需要被替換的內容,第二個引數為被替換的新的子字串。如果宣告為全域性匹配則會替換所有結果,否則只替換第一個匹配到的結果
      var str='hello world,hello test'
      console.log(str.replace('hello', 'hi'))   // hi world,hello test
      console.log(str.replace(/hello/, 'hi'))   // hi world,hello test
      console.log(str.replace(/hello/g,'hi'))   // hi world,hi test
      複製程式碼
  • split()

    • 用來將一個字串拆分成一個陣列,它接受一個正則或者子字元(串)作為引數,返回一個陣列,簡單情況下,我們不需要使用正則,只有在字串拆分規則不統一的情況下才需要使用正則
      // Base
      var str='abcdef'
      var arr=str.split('')
      console.log(arr)     // [a, b, c ,d, e, f]
      
      // More
      var str='how|old*are    you'
      var arr=str.split(/\||\*|\s+/)
      console.log(arr)     // [how, old, are, you]
      複製程式碼

相關文章