ES6知识点整理之----字符串扩展----新增API

1、字符的Unicode表示法,只限于码点在 \u0000 ~ \uFFFF之间,超出必须用两个双字节表示。ES6对这点做出了改进,只要将码点放入大括号,就能正确解读该字符

    "\u{20BB7}"
    // "?"
    "\u{41}\u{42}\u{43}"
    // "ABC"
    let hello = 123; hell\u{6F}
    // 123
    '\u{1F680}' === '\uD83D\uDE80'
    // true

 

2、现在JavaScript有6种方法可以表示一个字符

    '\z' === 'z' // true
     '\172' === 'z' // true
     '\x7A' === 'z' // true
     '\u007A' === 'z' // true
     '\u{7A}' === 'z' // true

 

3、字符串遍历器接口,使得字符串可以被 for...of 循环遍历;最大的优点是可以识别大于 0xFFFF的码点,传统的for循环无法识别

    for (let codePoint of 'foo') {
      console.log(codePoint)
    }
     // "f"
     // "o"
     // "o"

 

4、新增API

codePointAt()

能够正确处理 4 个字节储存的字符,返回一个字符的码点。其参数,是字符在字符串中的位置(从 0 开始)

    let s = '?a';
     s.codePointAt(0) // 134071
     s.codePointAt(1) // 57271
     s.codePointAt(2) // 97

 

String.fromCodePoint()

用于从码点返回对应字符

    String.fromCodePoint(0x20BB7) // "?" 
    String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y' // true

 

normalize()

用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。

接受一个参数来指定normalize的方式,参数的四个可选值如下。

  • NFC,默认参数,表示“标准等价合成”
  • NFD,表示“标准等价分解”
  • NFKC,表示“兼容等价合成”
  • NFKD,表示“兼容等价分解”
'\u01D1'.normalize() === '\u004F\u030C'.normalize() // true

 

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

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

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

    let s = 'Hello world!';
     s.startsWith('Hello') // true
     s.endsWith('!') // true
     s.includes('o') // true

 

repeat()

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

参数:

  • 小数会被向下取整
  • 负数或Infinity 报错
  • 0到-1之间的小数等同于0
  • NaN等同于0
  • 字符串会先被转换成数字
    'x'.repeat(3) // "xxx"
     'hello'.repeat(2) // "hellohello"
     'na'.repeat(0) // ""

 

 

padStart():字符串补全长度,头部补全

padEnd():字符串补全长度,尾部补全

一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

  • 原字符串的长度 >= 指定最小长度,返回原字符串
  • 用来补全的字符串与原字符串之合的长度 > 指定的最小长度,会截取超出位置的补全字符串
  • 省略第二个参数,默认使用空格补全
    x'.padStart(5, 'ab') // 'ababx'
     'x'.padStart(4, 'ab') // 'abax'
     'x'.padEnd(5, 'ab') // 'xabab'
     'x'.padEnd(4, 'ab') // 'xaba'

 

matchAll()

返回一个正则表达式在当前字符串的所有匹配

String.raw()

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

    String.raw`Hi\n${2+3}!`;
     // 返回 "Hi\\n5!" 
    String.raw`Hi\u000A!`;
     // 返回 "Hi\\u000A!"

 

b、此方法也可以作为正常的函数使用,它的第一个参数,应该是一个具有row属性的对象,且值是数组。

    String.raw({ raw: 'test' }, 0, 1, 2);
     // 't0e1s2t' 
     // 等同于
     String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);

 

转载于:https://www.cnblogs.com/adhehe/p/9642878.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值