gpt4 book ai didi

ocaml - 包含 CJK 字符的字符串长度

转载 作者:行者123 更新时间:2023-12-01 04:20:56 24 4
gpt4 key购买 nike

当给定一个包含 CJK 字符的字符串时,String.length 返回字符串中错误的字符数,因为它计算的是字节数。例如:

# String.length "第1";;
- : int = 4

字符串中有两个字符,但 String.length 返回 4(这是字符串中的字节数)。

如何获取包含 CJK 字符的字符串的实际长度?

最佳答案

如果要统计扩展字素簇(又名图形字符)的数量,可以使用 Uuseg 进行分割:

let len = Uuseg_string.fold_utf_8 `Grapheme_cluster (fun x _ -> x + 1) 0
;; len "春"

1

它的优点是在存在非预组合字符(如韩语中的分解 jamo)时仍然准确:

 ;; len "\u{1112}\u{1161}\u{11AB}"

1

这是正确的结果,因为前面的字符串应该显示为 ,即使它是用 3 个 unicode 标量值编写的。

关于ocaml - 包含 CJK 字符的字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55079287/

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