文字列を分割する - lisp-cookbook-ja/common-lisp GitHub Wiki
文字列 シーケンス ライブラリ cl-ppcre split-sequence
文字列を分割する
CLiki:CL-PPCREのsplitを使うことで、正規表現にマッチした部分で文字列を分割することができます。
(ppcre:split ":" "a:b:c")
;=> ("a" "b" "c")
また、CLiki:SPLIT-SEQUENCEのsplit-sequenceを使うことでも、文字列を分割できます。
(split-sequence:split-sequence #\: "a:b:c")
;=> ("a" "b" "c")
; 5
こちらは正規表現ではなく、区切りとなる文字によって、文字列を分割します。
ライブラリを使うまでも無い簡易的な場面では、search と subseq を使っても分割できます。
(再帰なので、長い文字列を処理するとスタックを使い尽くす場合があります。)
(defun split (x str)
(let ((pos (search x str))
(size (length x)))
(if pos
(cons (subseq str 0 pos)
(split x (subseq str (+ pos size))))
(list str))))
(format t "~S" (split ":" "a:b:c"))
;=> ("a" "b" "c")