split-sequence
은 기성품입니다.
당신은 또한 롤백 할 수 있습니다 자신의 :
(defun my-split (string &key (delimiterp #'delimiterp))
(loop :for beg = (position-if-not delimiterp string)
:then (position-if-not delimiterp string :start (1+ end))
:for end = (and beg (position-if delimiterp string :start beg))
:when beg :collect (subseq string beg end)
:while end))
곳이 문자, 예를 들어,에 분할할지 여부를 delimiterp
확인
(defun delimiterp (c) (or (char= C#\Space) (char= C#\,)))
또는
(defun delimiterp (c) (position c " ,.;/"))
PS. 예상 반환 값을 보면, 전에 string-downcase
에 전화하고 싶을 것 같습니다.
PPS. my-split
을 쉽게 수정하여 :start
, :end
, :delimiterp
&c를 수락 할 수 있습니다.
PPPS. my-split
처음 두 버전의 버그에 대해 사과드립니다. 이 아님을 나타내는 표시기는이이 기능의 자체 버전을 게시하지만 기성품 솔루션을 사용하십시오.
출처
2013-03-13 18:58:05
sds
체크 아웃 http://cl-cookbook.sourceforge.net/strings.html 그들은 일반적인 사용 사례의 무리 중 하나 기능 간단한 공간이 구두점을 제거하기 위해 수정할 수있는 split. –