• ES6中 字符串的方法


    String.raw()

    ES6 还为原生的 String 对象,提供了一个raw()方法。该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,往往用于模板字符串的处理方法。

    String.raw`Hi\n${2+3}!`
    // 实际返回 "Hi\\n5!",显示的是转义后的结果 "Hi\n5!"
    
    String.raw`Hi\u000A!`;
    // 实际返回 "Hi\\u000A!",显示的是转义后的结果 "Hi\u000A!"
    String.raw`Hi\\n`
    // 返回 "Hi\\\\n"
    
    String.raw`Hi\\n` === "Hi\\\\n" // true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    实例方法:codePointAt()

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

    var s = "𠮷";
    
    s.length // 2
    s.charAt(0) // ''
    s.charAt(1) // ''
    s.charCodeAt(0) // 55362
    s.charCodeAt(1) // 57271
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

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

    实例方法: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'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    实例方法:trimStart(),trimEnd()

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

    const s = '  abc  ';
    
    s.trim() // "abc"
    s.trimStart() // "abc  "
    s.trimEnd() // "  abc"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实例方法:replaceAll()

    历史上,字符串的实例方法replace()只能替换第一个匹配。

    'aabbcc'.replace('b', '_')
    // 'aa_bcc'
    
    • 1
    • 2
    • 如果要替换所有的匹配,不得不使用正则表达式的g修饰符。

    ‘aabbcc’.replace(/b/g, ‘_’) // ‘aa__cc’

    正则表达式毕竟不是那么方便和直观,ES2021 引入了replaceAll()方法,可以一次性替换所有匹配

    'aabbcc'.replaceAll('b', '_')
    // 'aa__cc'
    
    
    • 1
    • 2
    • 3

    如果searchValue是一个不带有g修饰符的正则表达式,replaceAll()会报错。这一点跟replace()不同。

    // 不报错
    'aabbcc'.replace(/b/, '_')
    
    // 报错
    'aabbcc'.replaceAll(/b/, '_')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • replaceAll()的第二个参数replacement是一个字符串,表示替换的文本,其中可以使用一些特殊字符串
    • $&:匹配的字符串。
    • $` :匹配结果前面的文本。
    • $':匹配结果后面的文本。
    • $n:匹配成功的第n组内容,n是从1开始的自然数。这个参数生效的前提是,第一个参数必须是正则表达式。
    • $ :指代美元符号 :指代美元符号 :指代美元符号

    实例方法:at()

    • at()方法接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置)。
    const str = 'hello';
    str.at(1) // "e"
    str.at(-1) // "o"
    
    • 1
    • 2
    • 3
  • 相关阅读:
    letcode 2171. 拿出最少数目的魔法豆
    微信小程序如何设置一个全局的定时器,跳转页面也不清除,只有在某个条件改变的时候才清除
    Python 树表查找_千树万树梨花开,忽如一夜春风来(二叉排序树、平衡二叉树)
    iOS UITableView获取到的contentSize不正确
    第一个2DGodot游戏-从零开始-逐步解析
    前端的限流主要是通过什么方式实现的?
    《异常检测——从经典算法到深度学习》19 OmniAnomaly:基于随机循环网络的多元时间序列鲁棒异常检测
    Linux篇17多线程第一部分
    【博客447】使用open vswitch构建虚拟网络
    带你一步步看vue-loader编译流程
  • 原文地址:https://blog.csdn.net/u010843503/article/details/136657735