脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-React中ES6字符串的扩展讲解,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。
ES6加强了对Unicode的支持,并且扩展了字符串对象。
1、字符的Unicode表示法
JavaScript 允许采用 /uxxxx形式表示一个字符,其中“XXXX”表示字符的码点。但是这种表示法只限于/u0000 --/uFFFF之间的字符。超出这个范围的字符,必须用两个双子节的形式表达。如果直接在/u后面跟上超过0xFFFF的数值,JavaScript会理解成/u 20BB+7.由于/u20bb是一个不可打印字符,所以只会显示一个空格,后面跟着一个7.
ES6对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。
"/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,请注明来意。