OCamlで指定した文字列がいくつ有るかカウントする方法
OCamlは標準ではStringから指定した単語の出現回数をカウントする関数は無いようです。 とうことで自作しました。 アルファベットのみ対応しています。 OCamlっていつになったらマルチバイト文字が普通に扱えるようになるんでしょう?
末尾再帰だと思うんですけど、try-withでも同様にちゃんと末尾再帰になるのか未確認です。
utop
で試す場合は、Str
モジュールを使っているので最初に#load "str.cma";;
を実行しておく必要が有ります。
let count search from =
let r = Str.regexp_string search in
let rec _count count target =
try
let index = Str.search_forward r target 0 in
_count (count+1) (Str.string_after target (index+1))
with Not_found -> count
in
_count 0 from
;;
公開日:2020/07/20