在SBCL中按空格拆分字符串

时间:2017-04-05 10:16:01

标签: split common-lisp sbcl

我一直在尝试将一个简单的以空格分隔的字符串拆分为单独的部分,例如:

我有:

"test   123    test2            test3"

,功能是返回:

('test' '123' 'test2' 'test3')

我的lisp发行版是sbcl,我正在尝试使用split-sequence模块。它运作良好,但我似乎无法输入“\ s +”作为分隔符的行。

在为此编写自己的函数之前,我看到split命令也存在,其中splitting就像:

* (split "\\s+" "foo   bar baz
frob")
("foo" "bar" "baz" "frob")

不幸的是,据我所知,分裂在SBCL中不起作用。感谢您对如何在SBCL中导入/完成任何建议。

2 个答案:

答案 0 :(得分:1)

CL-USER> (split-sequence:split-sequence-if
            (lambda (item)
              (position item " -+"))
            "aa bb  ccc  dddd--eee++++ffff"
            :remove-empty-subseqs t)

("aa" "bb" "ccc" "dddd" "eee" "ffff")
29

答案 1 :(得分:0)

在小cl-str库中有一个拉取请求(编辑:已合并)以执行此操作:

(str:words " aa   bb   ") ;; => ("aa", "bb")

同时,我们有splittrim

cl-str是一个现代的,一致的字符串操作库,它可以简化一些东西(否则不会过于严格,需要太多的库),如修剪,连接,连接,拆分,替换,空白?,...