结合 ES6 unicode 文字和 ES6 模板文字
Combining ES6 unicode literals with ES6 template literals
如果我想在ES6/ES2015javascript中打印一个unicode汉字,我可以这样做:
console.log(`\u{4eb0}`);
同样,如果我想将变量插入到模板字符串文字中,我可以这样做:
let x = "48b0";
console.log(`The character code is ${ x.toUpperCase() }.`);
但是,我似乎不能将两者结合起来打印一个列表,例如40个连续的unicode汉字。这不起作用:
for (let i = 0, firstCharCode = parseInt("4eb0", 16); i < 40; ++i) {
let hexCharCode = (firstCharCode + i).toString(16);
console.log(`\u{${ hexCharCode }}`); // generates SyntaxError
}
所以我想问一下是否有任何可能的方法。
您需要使用 String.fromCodePoint()
,它接受数字和 returns 字符。
你不能用文字来做到这一点,因为......好吧......它不再是文字了。文字不能作为过程的结果产生,它们需要写成文字。
如果我想在ES6/ES2015javascript中打印一个unicode汉字,我可以这样做:
console.log(`\u{4eb0}`);
同样,如果我想将变量插入到模板字符串文字中,我可以这样做:
let x = "48b0";
console.log(`The character code is ${ x.toUpperCase() }.`);
但是,我似乎不能将两者结合起来打印一个列表,例如40个连续的unicode汉字。这不起作用:
for (let i = 0, firstCharCode = parseInt("4eb0", 16); i < 40; ++i) {
let hexCharCode = (firstCharCode + i).toString(16);
console.log(`\u{${ hexCharCode }}`); // generates SyntaxError
}
所以我想问一下是否有任何可能的方法。
您需要使用 String.fromCodePoint()
,它接受数字和 returns 字符。
你不能用文字来做到这一点,因为......好吧......它不再是文字了。文字不能作为过程的结果产生,它们需要写成文字。