gpt4 book ai didi

javascript - 带有由字符分隔的变音符号的 Unicode 字符串

转载 作者:可可西里 更新时间:2023-11-01 02:54:45 26 4
gpt4 key购买 nike

我有这个 Unicode 字符串:Ааа́ббб́Ввв́ГгзазДд

我想按字符拆分它。现在,如果我尝试循环显示所有字符的真值,我会得到如下结果:
A a a ' Б ...

有没有办法将此字符串正确拆分为字符:А а ́

最佳答案

要正确执行此操作,您需要的是计算字素簇边界的算法,如 UAX 29 中所定义。 .不幸的是,这需要从 Unicode 字符数据库中了解哪些字符是哪些类的成员,而 JavaScript 不提供该信息 (*)。因此,您必须在脚本中包含 UCD 的副本,这会使它变得非常庞大。

如果您只需要担心拉丁语或西里尔语使用的基本重音符号,另一种方法是只采用组合变音符号 block (U+0300-U+036F)。这对于其他语言和符号会失败,但对于您想要执行的操作可能就足够了。

function findGraphemesNotVeryWell(s) {
var re= /.[\u0300-\u036F]*/g;
var match, matches= [];
while (match= re.exec(s))
matches.push(match[0]);
return matches;
}

findGraphemesNotVeryWell('Ааа́Ббб́Ввв́Г㥴Дд');
["А", "а", "а́", "Б", "б", "б́", "В", "в", "в́", "Г", "г", "Ґ", "ґ", "Д", "д"]

(*:可能有一种方法可以通过让浏览器呈现字符串并测量其中选择的位置来提取信息...但这肯定会非常困惑和困难跨浏览器工作。)

关于javascript - 带有由字符分隔的变音符号的 Unicode 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758913/

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