我必须把从 A 到 Z 的字母分别打印出来。所以我尝试了以下方法:
for(var i = 65; i < 91; i++) {
$('#alphabet').append('<div class="letter">' + '%' + i + '</div>');
}
我的想法是使用字母的十进制数字(例如:65 - A)通过循环轻松打印它们。这是可能的还是我必须使用数组?
致以诚挚的问候。
您可以使用String.fromCharCode将字符代码转换为字符串。
对于此用途(打印从 A 到 Z 的字母),
String.fromCharCode
就足够了;但是,问题标题指定了 Unicode。如果您想要转换 Unicode 代码(如果您是通过搜索来到这里的,则可能会),您需要使用 String.fromCodePoint
。
注意,此功能是 ES6/ES2015 中的新功能,您可能需要使用转译器或 polyfill 才能在旧版浏览器中使用它。
[...Array(91-65)].map((_, i)=>console.log(String.fromCharCode(i+65)))
String.fromCharCode(...codes: number[]): string
UTF-16 代码单元的数字序列。
因此,对于大于 0xFFFF 的 Unicode 代码点,需要代理对(需要
U+D800 to U+DFFF (surrogates)
来显示它们。
您可以使用以下函数来实现此目的:
function fromCodePoint(codePoint) {
if (codePoint > 0xFFFF) {
codePoint -= 0x10000
// const high = 0xD800 + (codePoint >> 10)
// const low = 0xDC00 + (codePoint & 0x3FF) // 0x3FF 0011_1111_1111
// return String.fromCharCode(high, low)
return String.fromCharCode(
0xD800 + (codePoint >> 10),
0xDC00 + (codePoint & 0x3FF)
)
}
return String.fromCharCode(codePoint)
}
console.log(fromCodePoint(0x4E00))
console.log(fromCodePoint(0x1FA80)) // Yo-Yo // https://www.compart.com/en/unicode/U+1fa80