我一直在尝试将一个简单的以空格分隔的字符串拆分为单独的部分,例如:
我有:
"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中导入/完成任何建议。
答案 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")
同时,我们有split
和trim
。
cl-str
是一个现代的,一致的字符串操作库,它可以简化一些东西(否则不会过于严格,需要太多的库),如修剪,连接,连接,拆分,替换,空白?,...