gpt4 book ai didi

javascript - 查找分解的 unicode 字符以替换为预组合的等价物

转载 作者:行者123 更新时间:2023-12-04 07:14:54 24 4
gpt4 key购买 nike

目标 ECMAScript 2019 我们有相当不错的 unicode 支持。我正在创建一个简单的文本查看器,我想在其中通知用户可以将某个分解的字符转换为预组合的字符。我怎样才能找到这些字符?

一个例子。考虑下面这封信。首先是分解版本,然后是预合成版本。

  • ä - 0061 0308 UTF-16
  • ä - UTF-16 格式的 00E4

现在,混合这些看似相同的字符意味着一些问题。当用户搜索“ä” 时,并非所有预期 的出现都将被找到,如this regex演示:

3 matches?!

这里我们得到了三个匹配项。令人困惑!同样,在该文本中搜索 "ä" 只会给出一个匹配项。

问题。为了帮助用户理解发生了什么,我想突出显示任何具有合适的预合成版本的分解字符。因此我需要找到这些字符组的开始结束

我怎样才能做到这一点?

最佳答案

您可以在符合 ECMAScript 2018+ 标准的 RegExp 中使用字母 + 变音符号模式:

const re = /\p{Alphabetic}\p{M}+/ug;
const matches = "ständig".matchAll(re); // With decomposed/multibyte char
console.log([...matches].map(x=>[x.index, x.index+x[0].length]))
// => [ [2,4] ]

这里,

  • \p{Alphabetic} - 匹配任何字母
  • \p{M}+ - 任何一个或多个变音符号。

关于javascript - 查找分解的 unicode 字符以替换为预组合的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68822483/

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