2017-04-05 62 views
1

我一直試圖分裂一個簡單的空格分隔字符串轉換成各個部分,例如:將字符串分割用空格在SBCL

我:

"test 123 test2   test3" 

和函數返回:

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

我的lisp發行版是sbcl,我正在試驗拆分序列模塊。它運行良好,但我似乎無法輸入「\ s +」行作爲分隔符的內容。

之前,我寫我自己的這個功能,我看到了分裂命令同樣存在,其中,拆分很簡單,只要:

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

不幸的是分裂不SBCL工作,因爲據我所知。感謝有關如何在SBCL中導入/完成的任何建議。

+1

你可以使用[cl-ppcre](http://weitz.de/cl-ppcre/)庫。 – jkiiski

+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 
+0

非常感謝! –

0

有來拉請求(編輯:它是合併)在小cl-str庫這樣做與:

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

在此期間,我們有splittrim

cl-str意味着是一個現代化的,一致的字符串操作的庫,簡化了一些東西,(否則不straigthforward並且需要太多的庫),如裝飾,concat,則加入,拆分,更換,空白,......

+0

謝謝,我在最後使用分割庫設法解決了這個問題。 –