如何动态生成像 JavaScript 中的 `\u{code}` 这样的 `\u1234` 文本?

问题描述 投票:0回答:1

我想动态生成 JSON(从 JavaScript),其中包含如下值:

["\u1234", "\u4321", ...]

如何生成给定的代码?

const letter_a = "a".codePointAt(0).toString(16).padStart(4, '0').toUpperCase()
const unicode = `\\u${letter_a}`

这不起作用,序列化为 JSON 会给出:

["\\u1234", "\\u4321", ...]

有没有办法动态生成这种数据,必须手写?

我想避免像

["ॆ"]
一样直接在JSON中绘制字形,因为组合字符等会变得混乱。所以我希望动态地写出
\u1234
代码点。

啊哈,我想我可以做到这一点:

JSON.stringify(points, null, 2).replace(/\\\\/g, '\\')

但是有更好的方法吗?

javascript json unicode
1个回答
0
投票

"\u0061"
(长度:1)是unicode文字,相当于
"a"
"\u0061" == "a"
->
true
)。
"\\u0061"
(长度:6)实际上是字面意思
\u0061
,它只有一个反斜杠,这就是您在浏览器控制台中看到的样子。

如果您想将字符串转换为 unicode 表示数组,并在某个时候将其转换回来,您可以执行以下操作:

const text = 'Hello, world!';

// store it in format of `\uFFFF`
const unicodes = [...text].map(char => '\\u' + char.codePointAt().toString(16).toUpperCase().padStart(4, 0));

console.log(unicodes);



// restore the unicode array
const literal = unicodes.map(unicode => String.fromCharCode(parseInt(unicode.replace(/^\\u/, ''), 16))).join('');

console.log(literal);

© www.soinside.com 2019 - 2024. All rights reserved.