字符串的ES5和ES6方法

版权声明:本文为博主前端基础文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

  • ES5
    • String.fromCharCode()
      • 该方法的参数是一系列Unicode码点,返回对应的字符串
    • charAt()
      • 该方法返回指定位置的字符,参数是从0开始编号的位置
    • charCodeAt()
      • 方法返回给定位置字符的Unicode码点(十进制表示),相当于String.fromCharCode()的逆操作
    • concat()
      • 方法用于连接两个字符串,返回一个新字符串,不改变原字符串
    • slice()
      • 方法用于从原字符串取出子字符串并返回,不改变原字符串。它的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)
    • substring()
      • 方法用于从原字符串取出子字符串并返回,不改变原字符串。它与slice作用相同,但有一些奇怪的规则,因此不建议使用这个方法,优先使用slice。此方法的第一个参数表示子字符串的开始位置,第二个位置表示结束位置。
    • substr()
      • 方法用于从原字符串取出子字符串并返回,不改变原字符串。此方法的第一个参数是子字符串的开始位置,第二个参数是子字符串的长度。
    • indexOf(),lastIndexOf()
      • 这两个方法用于确定一个字符串在另一个字符串中的位置,都返回一个整数,表示匹配开始的位置。如果返回-1,就表示不匹配。两者的区别在于,indexOf从字符串头部开始匹配,lastIndexOf从尾部开始匹配。
    • trim()
      • 方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串
    • toLowerCase(),toUpperCase(),它们都返回一个新字符串,不改变原字符串
      • toLowerCase方法用于将一个字符串全部转为小写,
      • toUpperCase则是全部转为大写。
    • localeCompare()
      • 方法用于比较两个字符串。它返回一个整数,如果小于0,表示第一个字符串小于第二个字符串;如果等于0,表示两者相等;如果大于0,表示第一个字符串大于第二个字符串。
    • match()
      • 方法用于确定原字符串是否匹配某个子字符串,返回一个数组成员为匹配的第一个字符串。如果没有找到匹配,则返回null
    • search()
      • 方法的用法等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1
    • replace()
      • 方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)
    • split()
      • 方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组

  • ES6
    • 字符的 Unicode 表示法

    • codePointAt()

      • JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符。
    • String.fromCodePoint()

      • ES5 提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符(Unicode 编号大于0xFFFF)。
    • 字符串的遍历器接口

    • ES6 为字符串添加了遍历器接口(Iterator),使得字符串可以被for…of循环遍历。

    • at()

      • ES5 对字符串对象提供charAt方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF的字符。
    • normalize()

      • 许多欧洲语言有语调符号和重音符号。为了表示它们,Unicode 提供了两种方法。 一种是直接提供带重音符号的字符,比如Ǒ(\u01D1)。
        另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如O(\u004F)和ˇ(\u030C)合成Ǒ(\u004F\u030C)。
    • includes(), startsWith(), endsWith()

      • 传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。

        - includes():返回布尔值,表示是否找到了参数字符串。
        - startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
        - endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
        
    • repeat()

      • 方法返回一个新字符串,表示将原字符串重复n次。
    • padStart(),padEnd()

      • ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。
    • 模板字符串

    • 模板编译

    • 标签模板

      • 模板字符串的功能,不仅仅是上面这些。它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能(tagged template)。
    • String.raw()方法

      • 往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。
    • 模板字符串的限制

      • 前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,导致无法嵌入其他语言。