我正在尝试让 JavaScript 打印所有 Unicode 字符。根据我的研究,有 1,114,112 个 Unicode 字符。
像下面这样的脚本可以工作:
for(i = 0; i < 1114112; i++)
console.log(String.fromCharCode(i));
但我发现在 1,114,112 个 Unicode 字符中只使用了 10%。
我怎样才能只打印使用过的 unicode 字符?
最佳答案
As Jukka said , JavaScript 没有内置的方法来知道给定的 Unicode 代码点是否已经分配了一个符号。
不过,还是有办法做你想做的。
我写了several scripts解析 Unicode 数据库并为 Unicode 中的每个类别、属性、脚本、 block 等创建单独的数据文件。我还创建了 an HTTP API这允许您以编程方式获取给定 Unicode 类别中的所有代码点(即数字数组),或具有给定 Unicode 属性的所有符号(即每个字符的字符串数组),或与任何符号匹配的正则表达式在某个 Unicode 脚本中。
例如,要获取包含在 Unicode v6.3.0 中分配了一个符号的每个 Unicode 代码点的项目的字符串数组,您可以使用以下 URL:
http://mathias.html5.org/data/unicode/format?version=6.3.0&property=Assigned&type=symbols&prepend=window.symbols%20%3D%20&append=%3B
请注意,您可以通过调整 URL 参数将您喜欢的任何内容添加到输出中,以便更轻松地在您自己的脚本中重用数据。根据您的要求,console.log()
包含所有这些符号的示例 HTML 页面可以编写如下:
<!DOCTYPE html>
<meta charset="utf-8">
<title>All assigned Unicode v6.3.0 symbols</title>
<script src="http://mathias.html5.org/data/unicode/format?version=6.3.0&property=Assigned&type=symbols&prepend=window.symbols%20%3D%20&append=%3B"></script>
<script>
window.symbols.forEach(function(symbol) {
// Do what you want to do with `symbol` here, e.g.
console.log(symbol);
});
</script>
Demo .请注意,由于这是很多的数据,您可以预期打开此页面时您的 DevTools 控制台会变慢。
更新:现在应该使用Unicode数据包,比如unicode-11.0.0
反而。在 Node.js 中,您可以执行以下操作:
const symbols = require('unicode-11.0.0/Binary_Property/Assigned/symbols.js');
console.log(symbols);
// Or, to get the code points:
require('unicode-11.0.0/Binary_Property/Assigned/code-points.js');
// Or, to get a regular expression that only matches these characters:
require('unicode-11.0.0/Binary_Property/Assigned/regex.js');
关于JavaScript 打印所有使用的 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22737616/