gpt4 book ai didi

javascript - 如何使用 Javascript 比较 "M"和 "M"(UTF 格式)?

转载 作者:行者123 更新时间:2023-11-30 11:48:24 25 4
gpt4 key购买 nike

我有一种情况,如果它包含某个子字符串,我必须搜索一个网格。我有一个搜索栏,用户可以在其中键入字符串。问题是网格包含日语文本和 Unicode 字符的混合,例如:MAGシンチ注〓333MB1。

如何比较我从键盘输入的字母“M”和上例中的字母“M”的内容相等性?我正在尝试使用纯 Javascript 而不是 Jquery 或其他库来执行此操作。我必须在 Internet Explorer 中执行此操作。

谢谢,

最佳答案

正如@Rhymoid 对该问题的深刻评论中所述,现代 JavaScript (ES2015) 包括对 Unicode 的规范化支持。一种规范化模式是将“兼容”字母形式从较高代码页映射到它们在较低代码页中的最基本代表(总而言之,它有点复杂)。 .normalize("NFKD") 方法会将日文代码页中的“M”映射到对应的拉丁文代码页。因此

"MAGシンチ注 333MBq".normalize("NFKD")

会给予

"MAGシンチ注 333MBq"

截至 2016 年底,IE 不支持 .normalize()

在较低的层次上,ES2015 也有 .codePointAt()(在另一个好的答案中提到),这就像下面描述的旧的 .charCodeAt() 但它也理解 UTF-16 对。但是,.codePointAt()(同样是在 2016 年底)不受 Safari 支持。

以下是旧版浏览器的原始答案

您可以使用 .charCodeAt() 方法来检查字符串中的 UTF-16 字符代码。

"M".charCodeAt(0)

是 77,而

"M".charCodeAt(0)

是 65325。

这种方法很复杂,因为对于某些 Unicode 字符,UTF-16 表示涉及 JavaScript 字符串中的两个单独的字符位置。该语言不提供处理该问题的 native 支持,因此您必须自己做。 55926 和 57343(D800 和 DFFF 十六进制)之间的字符代码指示双字符对的开始。 The UTF-16 Wikipedia page has more information ,还有其他各种来源。

关于javascript - 如何使用 Javascript 比较 "M"和 "M"(UTF 格式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40203347/

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