字符串的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()方法

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

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