【发布时间】:2017-04-05 09:01:22
【问题描述】:
例如const words = 'a̋b̋';,words.length 就是4。但我们期待 2 的“真实”长度。
或者,有没有什么安全的方法可以遍历上面words中的所有字符?
【问题讨论】:
例如const words = 'a̋b̋';,words.length 就是4。但我们期待 2 的“真实”长度。
或者,有没有什么安全的方法可以遍历上面words中的所有字符?
【问题讨论】:
JavaScript 中没有任何内置功能可以帮助您将这些组合标记与其他字符区分开来。当然,您可以使用来自http://unicode.org 的参考信息构建一些东西。 :-)
...但至少有一个人似乎已经为您这样做了:https://github.com/orling/grapheme-splitter
进入 grapheme-splitter.js 库。它可用于将 JavaScript 字符串正确地拆分为人类用户所称的单独字母(或 Unicode 术语中的“扩展字形簇”),无论它们的内部表示是什么。它是 Unicode UAX-29 标准的实现。
const words = 'a̋b̋';
const splitter = new GraphemeSplitter();
const graphemes = splitter.splitGraphemes(words);
console.log(graphemes);
这会在graphemes、"a̋" 和"b̋" 中产生两个条目。 (不能做实时示例,不允许到 github 原始页面的实时链接。)
【讨论】: