RosettaCodeData/Task/String-length/OCaml/string-length-3.ocaml
2023-07-01 13:44:08 -04:00

11 lines
246 B
Text

let utf8_length (s: String.t) =
let byte_length = String.length s in
let rec count acc n =
if n = byte_length
then acc
else
let n' = n + (String.get_utf_8_uchar s n |> Uchar.utf_decode_length) in
count (succ acc) n'
in
count 0 0
;;