JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。
但是,这种表示法只限于码点在\u0000~\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表示。
ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。
字符串的拓展
Unicode 字符表示方法
表示方法
1 2 3 4 5 6 7 8 9 10
| { console.log('a', `\u0061`); console.log('s', `\u20BB9`); console.log('s', `\u{20BB9}`); }
|
es5 中存在的一些问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| { let s1 = '𠮹'; console.log('length:', s1.length); console.log('字符1:', s1.charAt(0)); console.log('字符2:', s1.charAt(1)); console.log('字符编码1:', s1.charCodeAt(0)); console.log('字符编码2:', s1.charCodeAt(1)); let s2 = '𠮹a'; console.log('length:', s2.length); console.log('字符1:', s2.codePointAt(0)); console.log('字符十六进制:', s2.codePointAt(0).toString(16)); console.log('字符2:', s2.codePointAt(1)); console.log('字符3:', s2.codePointAt(2)); console.log(String.fromCharCode("0x20bb9")); console.log(String.fromCodePoint("0x20bb9")); }
|
of 遍历循环输出
1 2 3 4 5 6 7 8 9 10 11 12
| { // 普通循环输出字符串 let str = "\u{20bb9}abc"; for (let i = 0; i < str.length; i++) { console.log(str[i]); // �, �, a, b, c } // 使用 of 遍历循环输出。 for (let code of str) { console.log(code); // 𠮹, a, b, c } }
|
新增的API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| { let s1 = 'string'; let s2 = '1'; console.log('s1', s1.includes('r')) console.log('s2', s1.startsWith('st')); console.log('s3', s1.endsWith('ng')); console.log('s4', s1.repeat(2)); console.log('s5', s2.padStart(2, '0')) console.log('s6', s2.padEnd(2, '0')) console.log(String.raw`Hi\n${1 + 2}`); console.log(`Hi\n${1 + 2}`); }
|
字符串模板 ${} ``
1 2 3 4 5 6 7
| { let s1 = 'Hello'; let s2 = 'Word'; let sum = `输出:${s1} ${s2}`; console.log(sum); }
|
标签模板 如何理解?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { let user = { v3: 'v3', v2: 'v2', v1: 'v1' } let res = abc`I ${user.v1} am ${user.v2} a ${user.v3}`; function abc(str, v1, v2, v3) { return str + v1 + v2 + v3; } console.log(res); }
|