首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将转义的"\u“Unicodes与比"U+FFFF”更短和更长的独角兽混合起来,从字符串中分别存储到JavaScript中的数组中?

如何将转义的"\u“Unicodes与比"U+FFFF”更短和更长的独角兽混合起来,从字符串中分别存储到JavaScript中的数组中?
EN

Stack Overflow用户
提问于 2022-10-25 14:12:21
回答 1查看 34关注 0票数 0

假设你有一个这样的字符串:

代码语言:javascript
复制
unicodes = ["\ua7a8\ua7a9\ud800\udf30\ud800\udf31\ud800\udf32\ud800\udf33\ud800\udf34\ud800\udf35\ud800\udf36\ud800\udf37\ud800\udf38\ud800\udf39\ud800\udf3a\ud800\udf3b\ud800\udf3c\ud800\udf3d"]

我想把每个unicode分别放到一个数组中。

所以看起来像这个["\ua7a8","\ua7a9","\ud800\udf30"]

我试过的是:

代码语言:javascript
复制
unicodes = ["\ua7a8\ua7a9\ud800\udf30\ud800\udf31\ud800\udf32\ud800\udf33\ud800\udf34\ud800\udf35\ud800\udf36\ud800\udf37\ud800\udf38\ud800\udf39\ud800\udf3a\ud800\udf3b\ud800\udf3c\ud800\udf3d"]
var collectedUnicodes = []

for (let i=0; i < unicodes.length; i++) {
    collectedUnicodes = collectedUnicodes.concat(unicodes[i].split(""))
}

console.log(collectedUnicodes)

返回以下内容:

代码语言:javascript
复制
['Ꞩ', 'ꞩ', '\uD800', '\uDF30', '\uD800', '\uDF31', '\uD800', '\uDF32', '\uD800', '\uDF33', '\uD800', '\uDF34', '\uD800', '\uDF35', '\uD800', '\uDF36', '\uD800', '\uDF37', '\uD800', '\uDF38', '\uD800', '\uDF39', '\uD800', '\uDF3A', '\uD800', '\uDF3B', '\uD800', '\uDF3C', '\uD800', '\uDF3D']

问题是它摧毁了那些长度超过4位数的独角兽。他们被分成两个\u

因为\uD800\uDF37一起是一个Unicode。我想要实现它,gtes把它放在一个数组元素中。而且可能会有像这样分开的独角兽,这可能是从\uF而不是\uD开始的。

做这件事的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-25 14:40:50

您可以使用.codePointAt()在给定位置生成Unicode代码点,使用.toString(16)获取十六进制表示,或者使用扩展运算符([...input])或for+of循环以完全独立于Unicode的方式分割单个字符:

代码语言:javascript
复制
const input = "\ua7a8\ua7a9\ud800\udf30\ud800\udf31\ud800\udf32\ud800\udf33\ud800\udf34\ud800\udf35\ud800\udf36\ud800\udf37\ud800\udf38\ud800\udf39\ud800\udf3a\ud800\udf3b\ud800\udf3c\ud800\udf3d";

let output = [];
for (const character of input) {
   output.push("U+" + character.codePointAt(0).toString(16).toUpperCase());
}

console.log(input, output.join(''));

参考编码

(您可能不需要代理数组,我没有深入研究)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74195471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档