javascript - 计算 Javascript 中的 unicode 字符

标签 javascript unicode

<分区>

我遇到了计算 unicode 字符的问题。我需要计算组合的 unicode 字符总数。

以这个 Angular 色为例:

द्ध

如果您在此字符串上使用 .length 属性,它会为您提供 3。这在技术上是正确的,因为它是以下内容的组合

但是,将 द्ध 放在文本区域中,然后您可以使用箭头键意识到它被视为一个字符。只有当您使用退格键时,您才会意识到有 3 个字符。

编辑:对于您的测试用例,请考虑它可能是一个词。它可能是这样的,

द्धद्द

这应该给 2 和 .length,但是给 6

当您想获取或设置输入元素中的当前插入符位置时,这是一个问题。

最佳答案

您的示例“द्ध”是一个包含三个 Unicode 字符的字符串,length 属性正确地表明了这一点。

您显然要计算的是某种其他意义上的“字符”,例如“说一种语言的人直觉上认为是一个字符”。这是一个模糊且易变的概念。 Unicode 标准附件 UAX #29 Unicode Text Segmentation试图分析这个概念,称它为“字素簇”,并描述了一些使用它的算法。

不幸的是,JavaScript 没有内置工具来识别一个字符是否是,例如结合 mark 和 this 应该算是一个集群的一部分。但是,如果您可以限制自己只处理一种书写系统,您可能可以手动编写操作代码,通过代码编号引用可能的 Unicode 字符。

此外,如果目的是使计数与某些输入编辑器的工作方式相匹配(例如,箭头键如何超过字符),您需要了解该编辑器的逻辑。它可能在某种意义上或其他方面实现了 Unicode 字素簇。

关于javascript - 计算 Javascript 中的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292855/

相关文章:

javascript - 主题不允许执行 JavaScript

JavaScript HTML 表单 : unicode user input to unicode output

html - 日文 unicode 字符正在反转 CSS 向左浮动

javascript - 使用 jsPDF 在 pdf 中添加 Unicode 文本

c# - Web 响应 header 中的 Unicode 数据

javascript - 如何根据AngularJS onchange中下拉列表的选定选项的值在div上添加动态ID

javascript - 如何在 JavaScript 中进行多行 SPARQL 查询?

bash - 回显表情符号时如何在 bash shell 中移动光标?

Javascript 克隆/附加会影响错误的图像或所有图像

javascript - 使用保留日志访问登录密码