JavaScript字符串API汇总

4,001 阅读4分钟

访问字符串中指定位置的字符的方法

  • 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) 的结果是一样的
      

    • 全局匹配
      var reg2=/(\w)s(\w)/g
      var str2="ws1estqsa"
      var result=str2.match(reg2)
      console.log(result) // 结果如下,此时的str2.match(reg2)是所有结果组成的数组,而 reg2.exec(str2)是匹配到的n个数组,其中每个数组包括的详细信息和非全局匹配的信息一样
      

  • 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]