zoukankan      html  css  js  c++  java
  • ES 字符串操作

    字符串遍历

          字符串遍历接口:

               1、for ... of ..   (注: 除了遍历字符串,这个遍历器最大的优点是可以识别大于oxFFFF的码点)

    for (let codePoint of 'sufeng') {
      console.log(codePoint)
    }
    // "s"
    // "u"
    // "f"
    // "e"
    // "n"
    // "g"

     模板字符串

         ES6引入了模板字符串解决这个问题,模板字符串是增强版的字符串,用反引号·``切换到英文输入法模式下找到电脑键盘 Esc 下面的键,敲两下就出现了反引号,它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

        如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。

        模板字符串中嵌入变量,需要将变量名写在${}之中,大括号内部可以放入任意的javascript表达式,可以进行运算,以及引用对象属性,不过如果大括号内的值不是字符串,将按照一般规则转为字符串,比如,大括号中是一个对象,将默认调用对象的toString方法。

    模板字符串甚至还能嵌套,示例如下

    const tmpl = addrs => `
      <table>
      ${addrs.map(addr => `
        <tr><td>${addr.first}</td></tr>
        <tr><td>${addr.last}</td></tr>
      `).join('')}
      </table>
    `;
    
    .
    .
    .
    
    const data = [
        { first: '<Jane>', last: 'Bond' },
        { first: 'Lars', last: '<Croft>' },
    ];
    
    console.log(tmpl(data));

    includes()   、startsWith() 、 endWith()

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

      includes(): 返回布尔值,表示是否找到了参数字符串

      startsWith(): 返回布尔值,表示参数字符串是否在原字符串的头部

      endsWith(): 返回布尔值,表示参数字符串是否在原字符串的尾部,

       三个方法,都支持第二个参数,表示开始搜索的位置。使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

    实例方法 repeat

       repeat方法返回一个新字符串,表示将原字符串重复n次,

       NAN 等同于 0

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

    参数取整运算

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

    参数是负数或者Infinity

     // Infinity 表示无穷
     'na'.repeat(Infinity)
     // RangeError 
    
     'na'.repeat(-1)
     // RangeError

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

    'na'.repeat('na') // ""
    'na'.repeat('3') // "nanana"

    实例方法:padStart(), padEnd()

    前者用于头部补全,pageEnd用以尾部补全

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

    如果原字符串的长度,等于或大于最打长度,则字符串补全不生效,返回源字符串

    'xxx'.padStart(2, 'ab') // 'xxx'
    'xxx'.padEnd(2, 'ab') // 'xxx'

    如果用来补全的字符串与原字符串,两者的长度值和超过了最大长度,则会截去超出位数的补全字符串。

     'abc'.padStart(10, '0123456789')
     // '0123456abc'

    padStart()的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。

    '1'.padStart(10, '0') // "0000000001"
    '12'.padStart(10, '0') // "0000000012"
    '123456'.padStart(10, '0') // "0000123456"

    另一个用途是提示字符串格式。

    '12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
    '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

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

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

    )
    // 'aa_bcc'

    引入了replaceAll()方法,可以一次性替换所有匹配。 实例方法:replaceAll() 返回一个新的字符串,不会改变原字符串

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

    substring( ) 方法

    未完,待续......
  • 相关阅读:
    Appium入坑前必看,附爬虫心得
    app爬虫神器--mitmproxy,mitmdump和appium的安装使用
    小米手机安装charles 证书 无法安装证书,与iphone的unkown,无法联网问题
    mac安装于启动Grafana
    charles单单抓不到google beowser的包
    charles Failed to install helper
    常规反爬复习总结
    FakeUserAgentError('Maximum amount of retries reached') 解决办法
    Java--Set的三个具体实现类
    Java集合--接口
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/12442749.html
Copyright © 2011-2022 走看看