特定の文字・文字列の出現回数を調べる

文字の数を調べる

対象が文字の場合,SRFI-13にあるstring-countを使います.マルチバイト文字も使えます.

(string-count s char/char-set/pred &optional start end)

使用例.

(use srfi-13)
(string-count "a\nb\nccc\nd\n" #\newline)
  =>4
(string-count "あああいいううええお" #\あ)
  =>3

複数文字の数を調べる

対象文字が複数ある場合,文字列をいったんリストにしてから数え上げます.

(define (string-count-chars str chars)
  (fold + 0 (map (lambda (ch) (string-count str ch))
		 (string->list chars))))

(string-count-chars "あああいいううええお" "いう")
  =>4
(string-count-chars "あああいいううええお" "うえ")
  =>4

文字列の出現回数を調べる

対象が文字ではなく,文字列の場合は,正規表現としてマッチさせてからlengthで数えます.

(length (scan-match #/うえ/ "あああいいううええお"))
  =>1