首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何遍历所有Unicode字符?

如何遍历所有Unicode字符?
EN

Stack Overflow用户
提问于 2015-11-19 06:54:11
回答 4查看 4.2K关注 0票数 3

是否可以遍历所有Unicode字符(UTF-8)?谢谢!我试过使用:

character = String.fromCharCode(i);

但我不确定如何实现它。

EN

回答 4

Stack Overflow用户

发布于 2015-11-19 07:10:57

UTF-8是一种编码!JavaScript字符串使用UTF16进行(mostly)编码。只有当你在一个不支持ES6的String.fromCodePoint的环境中工作时,编码才是重要的。使用ES6从代码点获取字符串:

var s = String.fromCodePoint(codePoint);

在没有ES6的情况下,对字符U+10000和更高版本使用UTF-16 surrogate pair

var s;

if (codePoint < 0x10000) {
    s = String.fromCharCode(codePoint);
} else {
    var offset = codePoint - 0x10000;
    s = String.fromCharCode(0xd800 + (offset >> 10),
                            0xdc00 + (offset & 0x3ff));
}

码点的范围从U+0000到U+10FFFF (1 114 Unicode 112值),但并不是该范围内的所有字符都是有效的 字符。您可以从http://www.unicode.org/Public/8.0.0/ucd/UnicodeData.txt获取一个表,并提取您真正想要遍历的字符。

票数 9
EN

Stack Overflow用户

发布于 2020-12-02 01:09:35

(添加此答案是因为与某些Google搜索相关)

在可能包含UTF-8多码点字符(即表情符号或非拉丁字母)的字符串上逐个字符迭代的正确方法是Array.from()

const bugs = ''

// WRONG, does not account for characters with > 2 Unicode code points
bugs.split('')
// Array(6) [ "\ud83d", "\udc1b", "\ud83d", "\udc1b", "\ud83d", "\udc1b" ]

// CORRECT
Array.from(bugs)
// Array(3) [ "", "", "" ]

然后,像你可以迭代任何普通数组一样进行迭代(建议:map/forEach)。

更多信息:https://medium.com/@giltayar/iterating-over-emoji-characters-the-es6-way-f06e4589516

票数 2
EN

Stack Overflow用户

发布于 2019-06-10 04:55:57

我认为这可能确切地定义了要迭代的内容:

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

https://stackoverflow.com/questions/33792050

复制
相关文章

相似问题

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