js ES6 对字符的操作注意事项
1.codePointAt
方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。
1 function is32Bit(c) { 2 return c.codePointAt(0) > 0xFFFF; 3 } 4 5 is32Bit("𠮷") // true 6 is32Bit("a") // false
2.ES6提供字符串实例的normalize()
方法,用来将字符的不同表示方法统一为同样的形式,这称为Unicode正规化。
normalize
方法可以接受四个参数。
NFC
,默认参数,表示“标准等价合成”(Normalization Form Canonical Composition),返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。NFD
,表示“标准等价分解”(Normalization Form Canonical Decomposition),即在标准等价的前提下,返回合成字符分解的多个简单字符。NFKC
,表示“兼容等价合成”(Normalization Form Compatibility Composition),返回合成字符。所谓“兼容等价”指的是语义上存在等价,但视觉上不等价,比如“囍”和“喜喜”。(这只是用来举例,normalize
方法不能识别中文。)NFKD
,表示“兼容等价分解”(Normalization Form Compatibility Decomposition),即在兼容等价的前提下,返回合成字符分解的多个简单字符。- 1 '\u01D1'.normalize() === '\u004F\u030C'.normalize() 2 // true
1 '\u004F\u030C'.normalize('NFC').length // 1 2 '\u004F\u030C'.normalize('NFD').length // 2
3.includes(),startsWith(),endsWith()
- includes():返回布尔值,表示是否找到了参数字符串。
- startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
- endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
1 var s = 'Hello world!'; 2 3 s.startsWith('Hello') // true 4 s.endsWith('!') // true 5 s.includes('o') // true
使用第二个参数n
时,endsWith
的行为与其他两个方法有所不同。它针对前n
个字符,而其他两个方法针对从第n
个位置直到字符串结束。
1 var s = 'Hello world!'; 2 3 s.startsWith('world', 6) // true 4 s.endsWith('Hello', 5) // true 5 s.includes('Hello', 6) // false
4.repeat
方法返回一个新字符串,表示将原字符串重复n
次。
5.