大写UTF-8文本

时间:2014-03-24 17:01:38

标签: utf-8 ocaml

我需要在OCaml中大写一些文本(即将第一个字母大写)。不幸的是,我的文本是UTF-8,标准库只支持ASCII。

我在电池中找到了uppercase功能,但它似乎仅在旧版本中可用。 Camomile(看起来是处理UTF-8的最佳选择)似乎已经死了,而且文档很少。

2 个答案:

答案 0 :(得分:3)

甘菊是这里的解决方案。有关sourceforge的文档:http://camomile.sourceforge.net/dochtml/index.html 它非常功能化,可能一见钟情,可能需要一些时间来掌握它,但它可以完成这项任务。

大写将是:

# open CamomileLibraryDefault;;
# module CM = Camomile.CaseMap.Make(Camomile.UTF8);;
# print_endline (CM.titlecase "привет");;
Привет

答案 1 :(得分:3)

感谢ygrek的帮助,我找到了问题的答案:

let capitalize (s : string) : string =
  if s = "" then "" else
  let open CamomileLibraryDefault.Camomile in
  let module CM = CaseMap.Make(UTF8) in
  let first = UTF8.get s 0 in
  let capital = CM.uppercase (UTF8.init 1 (fun _ -> first)) in
  UTF8.init (UTF8.length s) (function 0 -> UTF8.get capital 0 | i -> UTF8.get s i)