我遇到了计算unicode字符的问题。我需要计算总的组合unicode字符。
以此字符为例:
द्ध
如果你在这个字符串上使用.length
属性,它会给你3.这在技术上是正确的,因为它是
द
,्
和ध
但是,将द्ध
放在文本区域中,然后通过使用箭头键将其视为一个字符。只有你使用退格键才能意识到有3个字符。
编辑:同样对于您的测试用例,请考虑它可能是一个单词。它可能是这样的,
द्धद्द
这应该给{2} .length
,但给出6
当您想要获取或设置输入元素中的当前插入位置时,这是一个问题。
答案 0 :(得分:3)
您的示例“द्ध”是一个由三个Unicode字符组成的字符串,length
属性正确表明了这一点。
你显然想要计算的是其他意义上的“人物”,比如“一个语言的说话者直觉上看作一个角色”。这是一个模糊和可变的概念。 Unicode标准附件UAX#29 Unicode Text Segmentation试图分析这个概念,称之为“字形集群”,并描述了一些使用它的算法。
不幸的是,JavaScript没有用于识别字符是否是例如的内置工具。结合标记,这应该被视为一个集群的一部分。但是,如果您可以限制自己仅处理一个写入系统,则可以手动编写操作代码,并根据代码编号引用可能的Unicode字符。
此外,如果目的是使计数与某些输入编辑器的工作方式相匹配(例如箭头如何更多地键入字符),则需要知道该编辑器的逻辑。它可以在某种意义上实现Unicode字形集群,或者其他东西。