2017-04-05 5 views
1

で空白で文字列:分割私は例えば、個々の部分に簡単な空白で区切られた文字列を分割しようとしてきたSBCL

私が持っている:

"test 123 test2   test3" 

と機能は返すことです:

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

私のLispディストリビューションはsbclで、スプリットシーケンスモジュールを試していました。それはうまく動作しますが、区切り文字として "\ s +"の行に何かを入力することはできません。

私はこのために私自身の関数を書く前に、私は分割はと同じくらい簡単ですsplitコマンドでも、存在していることを見た:

* (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

は今後プル要求がある(編集:それはマージされます):ところで

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

、我々はsplittrimを持っていることを行うには少しcl-strライブラリに。

cl-strはトリム、連結、参加、スプリット、置き換え、空白のように(そうでない場合はstraigthforwardとあまりにも多くのライブラリを必要としない)いくつかのものを容易に近代的で一貫性のある文字列操作ライブラリであることを意味する?、...

+0

ありがとう、私は最後に分割ライブラリを使用してこれを解決することができました。 –

関連する問題