• 【ES6】字符串的新增方法


    1.实例方法:includes(), startsWith(), endsWith()


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

    • includes():返回布尔值,表示是否找到了参数字符串。
    • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
    • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
      let s = 'Hello world!';
      
      s.startsWith('Hello') // true
      s.endsWith('!') // true
      s.includes('o') // true

      这三个方法都支持第二个参数,表示开始搜索的位置。

      let s = 'Hello world!';
      
      s.startsWith('world', 6) // true
      s.endsWith('Hello', 5) // true
      s.includes('Hello', 6) // false

      上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

      2.repeat()
      repeat方法返回一个新字符串,表示将原字符串重复n次。
      'x'.repeat(3) // "xxx"
      'hello'.repeat(2) // "hellohello"
      'na'.repeat(0) // ""

      参数如果是小数,会被取整。

      'na'.repeat(2.9) // "nana"

      如果repeat的参数是负数或者Infinity,会报错。

      'na'.repeat(Infinity)
      // RangeError
      'na'.repeat(-1)
      // RangeError

      但是,如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0repeat视同为 0。

      'na'.repeat(-0.9) // ""

      参数NaN等同于 0。

      'na'.repeat(NaN) // ""

      如果repeat的参数是字符串,则会先转换成数字。

      'na'.repeat('na') // ""
      'na'.repeat('3') // "nanana"
    • 3.实例方法:padStart(),padEnd() 
      ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

      'x'.padStart(5, 'ab') // 'ababx'
      'x'.padStart(4, 'ab') // 'abax'
      
      'x'.padEnd(5, 'ab') // 'xabab'
      'x'.padEnd(4, 'ab') // 'xaba'

      上面代码中,padStart()padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。

      如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。
      如果省略第二个参数,默认使用空格补全长度。

    • 4实例方法:trimStart(),trimEnd() 
      ES2019 对字符串实例新增了trimStart()trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。

      const s = '  abc  ';
      
      s.trim() // "abc"
      s.trimStart() // "abc  "
      s.trimEnd() // "  abc"
    • 5.实例方法:replaceAll()
      历史上,字符串的实例方法replace()只能替换第一个匹配。
      ES2021 引入了replaceAll()方法,可以一次性替换所有匹配。

      'aabbcc'.replaceAll('b', '_')
      // 'aa__cc'

      详细

  • 相关阅读:
    我们是怎么管理QQ群的
    2014年10月【下】-前端开发半月刊
    我们一般的前端开发流程
    没有素描色彩基础适合学习UI吗,如果可以,该怎么学?
    豪情-关于生活工作学习之感悟-第一篇
    网页插件学javascript还是jquery好啊?
    我们平时是怎么写html和css的?
    2014年10月【上】-前端开发半月刊
    2014年9月-前端开发月刊
    固定滚动菜单
  • 原文地址:https://www.cnblogs.com/lbonet/p/14388176.html
Copyright © 2020-2023  润新知