将 JavaScript 字符串拆分为“字符”可以轻松完成,但如果您关心 Unicode(并且您应该关心 Unicode),则会出现问题。
JavaScript 本身将字符视为 16 位实体(UCS-2 或 UTF-16 https://en.wikipedia.org/wiki/UTF-16) 但这不允许使用 Unicode 字符之外的字符BMP(基本多语言平面) https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane.
为了处理 BMP 之外的 Unicode 字符,JavaScript 必须考虑“代理对 https://stackoverflow.com/questions/tagged/surrogate-pairs”,它本身并不这样做。
我正在寻找如何按代码点拆分 js 字符串,无论代码点需要一个还是两个 JavaScript“字符”(代码单元)。
根据您的需求,划分代码点 https://en.wikipedia.org/wiki/Code_point可能还不够,您可能想按“分割”字素簇 http://www.termwiki.com/EN:grapheme_cluster”,其中簇是一个基本代码点,后跟其所有非间距修饰符代码点,例如结合重音符号和变音符号 https://en.wikipedia.org/wiki/Combining_character.
出于这个问题的目的,我不需要按字素簇进行分割。
@bobince 的答案(幸运的是)变得有点过时了;你现在可以简单地使用
var chars = Array.from( text )
获取尊重星体/32位/代理Unicode字符的单代码点字符串列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)