Aer*_*ero 2 javascript iteration unicode
是否可以遍历所有Unicode字符(UTF-8)?谢谢!我试过使用:
character = String.fromCharCode(i);
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何实现它。
(添加此答案是因为与某些 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) [ "", "", "" ]
Run Code Online (Sandbox Code Playgroud)
然后,像迭代任何普通数组一样进行迭代(建议:map/ forEach)。
更多信息:https://medium.com/@giltayar/iteating-over-emoji-characters-the-es6-way-f06e4589516
UTF-8是一种编码!JavaScript字符串(大多数)以UTF-16编码。仅当您在不支持ES6的环境中工作时,编码才重要String.fromCodePoint。使用ES6从代码点获取字符串:
var s = String.fromCodePoint(codePoint);
Run Code Online (Sandbox Code Playgroud)
在没有ES6的情况下,对字符U + 10000及更高版本使用UTF-16 代理对:
var s;
if (codePoint < 0x10000) {
s = String.fromCharCode(codePoint);
} else {
var offset = codePoint - 0x10000;
s = String.fromCharCode(0xd800 + (offset >> 10),
0xdc00 + (offset & 0x3ff));
}
Run Code Online (Sandbox Code Playgroud)
代码点的范围是U + 0000到U + 10FFFF(值1114112),但不是该范围内的所有内容都是有效的Unicode字符。您可以从http://www.unicode.org/Public/8.0.0/ucd/UnicodeData.txt获取一个表,并提取您真正想要迭代的字符。
根据文档,传递给的参数String.fromCharCode(a)被转换调用ToUint16,然后返回所述字符。您可以使用任何您想要的数字来调用它,但值将限制在 0 和 2 16或 2 32之间
highNumber = 500; //This could go very high\nout = ""\nfor(i=0;i<highNumber;i++){\n out += String.fromCharCode(i);\n}\nconsole.log(out);\nRun Code Online (Sandbox Code Playgroud)\n\n危险注意,如果您运行此代码,2^16您可能会冻结您的选项卡或浏览器,它太大了。这是理解您想要迭代所有字符而不是给定字符串中的所有字符,这是完全不同的事情。
更合理的输出示例highNumber(即 500)如下:
!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqr\nstuvwxyz{|}~\xc2\xa0\xc2\xa1\xc2\xa2\xc2\xa3\xc2\xa4\xc2\xa5\xc2\xa6\xc2\xa7\xc2\xa8\xc2\xa9\xc2\xaa\xc2\xab\xc2\xac\xc2\xad\xc2\xae\xc2\xaf\xc2\xb0\xc2\xb1\xc2\xb2\xc2\xb3\xc2\xb4\xc2\xb5\xc2\xb6\xc2\xb7\xc2\xb8\xc2\xb9\xc2\xba\xc2\xbb\xc2\xbc\xc2\xbd\xc2\xbe\xc2\xbf\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x97\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\n\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb3\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb7\xc3\xb8\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf\xc4\x80\xc4\x81\xc4\x82\xc4\x83\xc4\x84\xc4\x85\xc4\x86\xc4\x87\xc4\x88\xc4\x89\xc4\x8a\xc4\x8b\xc4\x8c\xc4\x8d\xc4\x8e\xc4\x8f\xc4\x90\xc4\x91\xc4\x92\xc4\x93\xc4\x94\xc4\x95\xc4\x96\xc4\x97\xc4\x98\xc4\x99\xc4\x9a\xc4\x9b\xc4\x9c\xc4\x9d\xc4\x9e\xc4\x9f\xc4\xa0\xc4\xa1\xc4\xa2\xc4\xa3\xc4\xa4\xc4\xa5\xc4\xa6\xc4\xa7\xc4\xa8\xc4\xa9\xc4\xaa\xc4\xab\xc4\xac\xc4\xad\xc4\xae\xc4\xaf\xc4\xb0\xc4\xb1\xc4\xb2\xc4\xb3\xc4\xb4\xc4\xb5\xc4\xb6\xc4\xb7\xc4\xb8\xc4\xb9\xc4\xba\n\xc4\xbb\xc4\xbc\xc4\xbd\xc4\xbe\xc4\xbf\xc5\x80\xc5\x81\xc5\x82\xc5\x83\xc5\x84\xc5\x85\xc5\x86\xc5\x87\xc5\x88\xc5\x89\xc5\x8a\xc5\x8b\xc5\x8c\xc5\x8d\xc5\x8e\xc5\x8f\xc5\x90\xc5\x91\xc5\x92\xc5\x93\xc5\x94\xc5\x95\xc5\x96\xc5\x97\xc5\x98\xc5\x99\xc5\x9a\xc5\x9b\xc5\x9c\xc5\x9d\xc5\x9e\xc5\x9f\xc5\xa0\xc5\xa1\xc5\xa2\xc5\xa3\xc5\xa4\xc5\xa5\xc5\xa6\xc5\xa7\xc5\xa8\xc5\xa9\xc5\xaa\xc5\xab\xc5\xac\xc5\xad\xc5\xae\xc5\xaf\xc5\xb0\xc5\xb1\xc5\xb2\xc5\xb3\xc5\xb4\xc5\xb5\xc5\xb6\xc5\xb7\xc5\xb8\xc5\xb9\xc5\xba\xc5\xbb\xc5\xbc\xc5\xbd\xc5\xbe\xc5\xbf\xc6\x80\xc6\x81\xc6\x82\xc6\x83\xc6\x84\xc6\x85\xc6\x86\xc6\x87\xc6\x88\xc6\x89\xc6\x8a\xc6\x8b\xc6\x8c\xc6\x8d\n\xc6\x8e\xc6\x8f\xc6\x90\xc6\x91\xc6\x92\xc6\x93\xc6\x94\xc6\x95\xc6\x96\xc6\x97\xc6\x98\xc6\x99\xc6\x9a\xc6\x9b\xc6\x9c\xc6\x9d\xc6\x9e\xc6\x9f\xc6\xa0\xc6\xa1\xc6\xa2\xc6\xa3\xc6\xa4\xc6\xa5\xc6\xa6\xc6\xa7\xc6\xa8\xc6\xa9\xc6\xaa\xc6\xab\xc6\xac\xc6\xad\xc6\xae\xc6\xaf\xc6\xb0\xc6\xb1\xc6\xb2\xc6\xb3\xc6\xb4\xc6\xb5\xc6\xb6\xc6\xb7\xc6\xb8\xc6\xb9\xc6\xba\xc6\xbb\xc6\xbc\xc6\xbd\xc6\xbe\xc6\xbf\xc7\x80\xc7\x81\xc7\x82\xc7\x83\xc7\x84\xc7\x85\xc7\x86\xc7\x87\xc7\x88\xc7\x89\xc7\x8a\xc7\x8b\xc7\x8c\xc7\x8d\xc7\x8e\xc7\x8f\xc7\x90\xc7\x91\xc7\x92\xc7\x93\xc7\x94\xc7\x95\xc7\x96\xc7\x97\xc7\x98\xc7\x99\xc7\x9a\xc7\x9b\xc7\x9c\xc7\x9d\xc7\x9e\xc7\x9f\xc7\xa0\n\xc7\xa1\xc7\xa2\xc7\xa3\xc7\xa4\xc7\xa5\xc7\xa6\xc7\xa7\xc7\xa8\xc7\xa9\xc7\xaa\xc7\xab\xc7\xac\xc7\xad\xc7\xae\xc7\xaf\xc7\xb0\xc7\xb1\xc7\xb2\xc7\xb3\nRun Code Online (Sandbox Code Playgroud)\n