gpt4 book ai didi

javascript - Unicode:如何获取字符的所有代码点,例如ã(所以它可以在 JavaScript 正则表达式中使用)?

转载 作者:行者123 更新时间:2023-11-29 14:45:54 25 4
gpt4 key购买 nike

我的 Unicode 相关词汇不是很好,很抱歉这个冗长的问题。

ã这样的字符可以用\u00e3(带波浪号的拉丁文小写字母a)或\u0061(拉丁文小写字母a)表示a) 结合组合变音标记 \u0303(组合代字号)。现在,在 Java 中,为了匹配任何 Unicode 字母,我会寻找 [\p{L}],但 JavaScript 不理解,所以我必须寻找单独的代码点 (\unnnn)。我怎样才能从 ã 开始并弄清楚它可以用 Unicode 表示的所有各种方式,以便我可以将它们以 \unnnn 格式包含在我的正则表达式中?

最佳答案

How can I start with an ã and figure out all the various ways it can be represented in Unicode

您正在寻找 Unicode Equivalence .

您提到的两种形式是组合形式分解形式。获取cannonically equivalent Unicode 格式,你可以使用 String.prototype.normalize() .

  • 重要:检查 link浏览器兼容性。

str.normalize([form]) 接受以下形式:

  • NFC — 标准化形式规范组合。
  • NFD — 规范化形式规范分解。
  • NFKC — 规范化形式兼容性组合。
  • NFKD — 规范化形式相容性分解。

Code point sequences that are defined as canonically equivalent are assumed to have the same appearance and meaning when printed or displayed.

Sequences that are defined as compatible are assumed to have possibly distinct appearances, but the same meaning in some contexts.

Quote from Wikipedia

-选择你喜欢的等价形式


例如,在兼容形式中使用带波浪号的拉丁文小写字母a:

var char = "ã";
var nfkc = char.normalize('NFKC');
var nfkd = char.normalize('NFKD');

// Returns bytes as Unicode escaped sequences
function escapeUnicode(str){
var i;
var result = "";
for( i = 0; i < str.length; ++i){
var c = str.charCodeAt(i);
c = c.toString(16).toUpperCase();
while (c.length < 4) {
c = "0" + c;
}
result += "\\u" + c;
}
return result;
}

var char = "ã";
var nfkc = char.normalize('NFKC');
var nfkd = char.normalize('NFKD');

document.write('<br />NFKC: ' + escapeUnicode(nfkc));
document.write('<br />NFKD: ' + escapeUnicode(nfkd));

关于javascript - Unicode:如何获取字符的所有代码点,例如ã(所以它可以在 JavaScript 正则表达式中使用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com