1

文字列シーケンスをスペースで区切る方法を知っています:

(defun ff-cols (dir file)
  (with-open-file (ff-cols-str pathname :direction :input)
    (length (split-sequence #\Space (read-line ff-cols-str nil 'eof)))))

しかし、シーケンスをダブル スペースで区切るにはどうすればよいでしょうか。多くの場合、フラット ファイルには、ダブル スペースで区切られた列があります。

(split-sequence "  " "1  2  3  4")

戻り値

("1  2  3  4") ;
10

また、

(split-sequence #\Space "1  2  3  4")

戻り値

("1" "" "2" "" "3" "" "4") ;
10
4

3 に答える 3

2

代わりにこれを試してください:

(split-sequence-if (lambda (s) (equal s "  ")) "1  2  3  4")

またはこれ:

(split-sequence #\Space "1  2  3  4" :remove-empty-subseqs t)
于 2012-11-30T11:42:52.427 に答える
1
(ql:quickload "cl-ppcre")
(cl-ppcre:split "\\s\\s" "One  Two Three  Four   Five")
("One" "Two Three" "Four" " Five")

もちろん、正規表現を使用する他の言語から学んだことは何でも当てはまります。

于 2012-11-30T12:03:06.957 に答える
0

これは、文字列がダブルスペースで区切られていないことが原因である可能性があります

(split-sequence "  " "1 2 3 4")

試す

(split-sequence "  " "1  2  3  4")
于 2012-11-30T10:36:39.540 に答える