Ocaml:unicode字符串长度

use*_*er0 0 unicode ocaml

在 OCaml 中,如何计算可能具有 unicode 编码的字符串的长度?举个例子,这是我的问题:

\n
utop # "\\u{02227}";;\n- : string = "\xe2\x88\xa7"\nutop # Caml.String.length "\\u{02227}";;\n- : int = 3\nutop # Base.String.length "\\u{02227}";;\n- : int = 3\n
Run Code Online (Sandbox Code Playgroud)\n

我想得到明显的答案:1。

\n

oct*_*ron 6

如果您想计算扩展字素簇(也称为图形字符)的数量,您可以使用uuseg。例如

\n
let len = Uuseg_string.fold_utf_8 `Grapheme_cluster (fun x _ -> x + 1) 0\nlet n = len "\xe2\x88\xa7";;\n
Run Code Online (Sandbox Code Playgroud)\n

回报

\n
\n

值 n:整数 = 1

\n
\n