美文网首页文字欲Web前端之路简友广场
前端之路——JavaScript中的String(全)

前端之路——JavaScript中的String(全)

作者: 三点水滴 | 来源:发表于2019-05-17 18:58 被阅读4次

    JavaSript中的String

    字符串是JS中的基本数据类型之一,与数组有很多相似的地方,本文对字符串做一个总结

    属性

    • length
      这里的length指的是字符串类型数据的属性,而不是构造函数String的length。
      • 构造函数的length属性是作为函数的通用属性,表明形参的个数;
      • 字符串类型数据的length字符串中字符编码单元的数量,对于使用两个代码单元表示的不常用字符,length的值与实际字符的个数不一致

    方法

    • 静态方法

      • String.fromCharCode()
        返回由指定的UTF-16代码单元序列创建的字符串

          String.fromCharCode(189, 43, 190, 61)   // "½+¾="
        
      • String.fromCodePoint()
        返回使用指定的代码点序列创建的字符串

          String.fromCharCode(9731, 9733, 9842, 0x2F804)    // "☃★♲"
        
    • 实例方法

      • charAt
        从一个字符串中返回指定的字符,参数是index,默认为0,未找到返回空字符串

          const s = '12345'
          s.charAt()  // "1"
          s.chatAt(2) // "3"
          s.chatAt(-1)  // ""
        
      • concat

        将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回

          const s = 'hello'
          s.concat(' world', ' tom')  // "hello world tom"
        
      • endsWith

        用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据结果返回true或者false。可以传入第二个参数,指定从右往左匹配的长度

          const s = 'hello world'
          s.endsWith('d')     // true
          s.endsWith('world', 7)  // true。相当于 'o world'.endsWith('world')
        
      • includes

        用于判断一个字符串是否包含在另一个字符串中,根据结果返回true或者false。可以传入第二个参数,指定开始匹配的索引。

          const s = 'hello'
          s.includes('h') // true
          s.includes('h', 1)  //false
        
      • indexOf

        从左向右查找第一次出现指定值的索引,未找到则返回 -1。可指定查找起始索引。

          const s = 'hello world'
          s.indexOf('o')  // 4
        
      • lastIndexOf

        从右向左查找第一次出现指定值的索引,未找到则返回 -1。可指定查找起始索引。

          const s = 'hello world'
          s.lastIndexOf('o')  // 7
        
      • localeCompare

        比较参数字符串是否在目标字符串前面,返回正数、零和负数。可以传入locale,指定语言区域

          const s = 'hello'
          s.localeCompare('world')    // 'h' 在 'w' 前面,返回正数
        
      • match

        参数为正则表达式,返回一个字符串匹配正则表达式的的结果。如果不指定参数,返回[""]

          var s = 'For more information, see Chapter 3.4.5.1'
          var re = /see (chapter \d+(\.\d)*)/i
          var found = s.match(re)
          
          console.log(found)
          // ["see Chapter 3.4.5.1", "Chapter 3.4.5.1", ".1"]
          /** 该数组还有额外属性:
            groups: undefined, 
            index: 22, 
            input: "For more information, see Chapter 3.4.5.1"
          **/
        
      • matchAll

        match类似,区别是返回的结果是包含所有匹配结果的迭代器

          const regexp = RegExp('foo*','g')
          const str = 'table football, foosball'
          let matches = str.matchAll(regexp)
          
          for (const match of matches) {
            console.log(match)
          }
          
          // ["foo", index: 6, input: "table football, foosball", groups: undefined]
          // ["foo", index: 16, input: "table football, foosball", groups: undefined]
        
      • normalize

        按照指定的一种 Unicode 正规形式将当前字符串正规化

      • padEnd

        用指定字符串从末尾开始填充当前字符串,返回填充后达到指定长度的字符串

          const s = 'hello'
          s.padEnd(10) // "hello     "
          s.padEnd(10, 'a')   // "helloaaaaa"
          s.padEnd(10, 'ab')  // "helloababa"
        
      • padStart

        与padEnd类似,只不过是从起始位置开始填充

      • repeat

        构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。参数为指定的重复次数

        • 传入负数,Infinity都会报错
        • 传入NaN会返回空字符串
        • 传入小数会向下取整
          const s = 'hello'
          s.repeat(-1)    // Uncaught RangeError: Invalid count value
          s.repeat(Infinity)  // Uncaught RangeError: Invalid count value
          s.repeat(NaN)   // ""
          s.repeat(1.5)   // "hello"
          s.repeat(2) // "hellohello"
        
      • replace

        返回一个替换后的新字符串,参数可以是

        • 字符串
        • 正则表达式
        • 回调函数
          const s = 'hello'
          s.replace('e', 'a') // "hallo"
        
      • search

        返回找到的字符串第一次出现的下标

          const s = 'hello'
          s.search('l')   // 2
        
      • slice

        提取字符串的一部分,返回新字符串。参数为起始位置和结束位置

          const s = 'hello'
          s.slice(2, 5)   // "llo"
        
      • split

        按照指定分隔符将字符串切分成字符串数组

          const s = 'hello world'
          s.split('') //['h','e','l','l','o','','w','o','r','l','d']
          s.split(' ')    // ["hello", "world"]
        
      • startsWith

        类似endsWith,区别在于判断该字符串是否以指定字符串开头

      • substring

        返回指定下标之间的子字符串,与slice相同,区别在于

        • 如果起始下标大于结束下标,则substring会把两个下标交换位置,而slice会返回空字符串
        • 如果任何一个下标为负数,则substring会将其当作0来处理,而slice则是加上该字符串的长度
          const s = 'hello'
          s.substring(1, -3)  // "h"  ==> s.substing(1, 0) ==> s.substring(0, 1)
          s.slice(1, -3)  // "e"
        
      • toLowerCase

        将字符串转成小写

          const s = 'HEllo'
          s.toLowerCase() // hello
        
      • toUpperCase

        将字符串转成大写

          const s = 'HEllo'
          s.toUpperCase() // HELLO
        
      • trim

        从一个字符串的两端删除空白字符

          const s = '  hello  '
          s.trim()    // hello
        
      • trimRight

        类似trim,从一个字符串的右边删除空白字符

      • trimLeft

        类似trim,从一个字符串的左边删除空白字符

      • valueOf

        返回一个对象的原始值

          const s = new String('hello world') // String {"hello"}
          s.valueOf()     // "hello world"
        

    相关文章

      网友评论

        本文标题:前端之路——JavaScript中的String(全)

        本文链接:https://www.haomeiwen.com/subject/rnfaaqtx.html