javascript代码实例教程-React中ES6字符串的扩展讲解

发布时间:2018-12-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-React中ES6字符串的扩展讲解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

ES6加强了对Unicode的支持,并且扩展了字符串对象。

1、字符的Unicode表示法

JavaScript 允许采用 /uxxxx形式表示一个字符,其中“XXXX”表示字符的码点。但是这种表示法只限于/u0000 --/uFFFF之间的字符。超出这个范围的字符,必须用两个双子节的形式表达。如果直接在/u后面跟上超过0xFFFF的数值,JavaScript会理解成/u 20BB+7.由于/u20bb是一个不可打印字符,所以只会显示一个空格,后面跟着一个7.

ES6对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。

如:“/uDB42/uDFB7”       //”吉“

         "/u{20BB7}"     //  "吉"

      ‘/u{1F680}’ ==='/uD83D/uDE80'        //true

磁粒子表明,大括号表示法与四字节的UTF-16编码是等价的。

2、codePonITAt()

      javaScript内部,字符以UTF-16的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符,JavaScript会认为她们是两个字符。

ES6提供了codePointAt方法,能够正确处理4个字节储存的字符,返回一个字符的码点。

     codePointAt方法的参数,是字符在字符串中的位置(从0开始)。

     总之,codePontAt方法会正确返回32位的UTF-16字符的码点。对于哪些两个字节存储的常规字符,它的返回结果与charCodeAt方法相同。

codePontAt方法返回的是码点的十进制值。如果想要十六进制的值,可以使用toString方法转换一下。

  事实上,codePintAt方法是测试一个字符由两个字节还是四个字节组成的最简单的方法。32Bit

eg:

   function is32Bit(c){

      return c.codePointAt(0) > 0xFFFF;

}

 is32Bit("a")  //false

3、String.FromCodePoint()

 ES5 提供String.fromCharCode方法,用于从码点返回对应的字符。

ES6提供了String.fromCodePoint方法,可以识别0xFFFF的字符,弥补了String.fromCharCode方法的不足。在作用上,正好与codePointAt方法相反。

 4、字符串的遍历器接口

ES6为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历。

eg:

     for (let codePoint of 'foo') {

  console.LOG(codePoint)

}

// "f"

// "o"

// "o"

5、at()方法。

ES5对字符串对象提供charAt方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF的字符。

ES6提出字符串实例的at方法,可以识别Unicode编号大于0xFFFF的字符,返回正确的字符。

6、normalize()

ES6提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为Unicode正规化。

    

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

Nfc默认参数,表示“标准等价合成”(Normalization Form canonical Composition),返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。

NFD,表示“标准等价分解”(Normalization Form Canonical Decomposition),即在标准等价的前提下,返回合成字符分解的多个简单字符。

NFKC,表示“兼容等价合成”(Normalization Form Compatibility Composition),返回合成字符。所谓“兼容等价”指的是语义上存在等价,但视觉上不等价,比如“”和“喜喜”。(这只是用来举例,normalize方法不能识别中文。)

NFKD,表示“兼容等价分解”(Normalization Form Compatibility Decomposition),即在兼容等价的前提下,返回合成字符分解的多个简单字符。

7、includes(), startsWith(), endsWith()

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

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

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

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

8、reapt()

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

eg:'x'.rePEat(3)  //"xxx"

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

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

如果参数是0到-1之间的小数,则等同于0。

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

参数NaN等同于0。

9、padStart(),padEnd()

如果某个字符串不够指定长度,会在头部或尾部补全。padStart用于头部补全,padEnd用于尾部补全。

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

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

eg:'abc'.padStart(10, '0123456789')

// '0123456abc'

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

eg:

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

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

如果省略第二个参数,则会用空格补全长度

eg:

    'x'.padStart(4) // '   x'

    'x'.padEnd(4) // 'x   '

用途

       (1)是为数值补全指定位数。下面代码生成10位的数值字符串。

      eg:'1'.padStart(10, '0') // "0000000001"

          '12'.padStart(10, '0') // "0000000012"

      (2)提示字符串格式。

        eg:'12'.padStart(10, 'yyYY-MM-DD') // "YYYY-MM-12"

  10、模板字符串

         ES6引入了模板字符串解决这个问题。

eg:

         $('#result').append(`

        There are <b>${basket.count}</b> items

         in your basket, <em>${basket.onSale}</em>

         are on sale!

         `);

      

 模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

 模板字符串中嵌入变量,需要将变量名写在${}之中。

11、String.raw()

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

  eg:String.raw'Hi/n${2+3}!';           //"Hi // n5 !"

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-React中ES6字符串的扩展讲解全部内容,希望文章能够帮你解决javascript代码实例教程-React中ES6字符串的扩展讲解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。