在 lisp 中解析逗号分隔的字符串
Parsing a comma separated string in lisp
我正在尝试使用以下函数使用 Common lisp 解析逗号分隔的字符串。对于 (separate-on-comma "a,b,c")
,我希望输出 ("a" "b" "c")
,但我得到的是 ("c" "c" "c")
。
我在这里想念什么?
(defun separate-on-comma (line)
(loop
with fields = ()
with field = (make-array 0 :element-type 'character :adjustable t :fill-pointer 0)
for x across line
when (char= x #\,)
do (push field fields)
and do (setf (fill-pointer field) 0)
else
do (vector-push-extend x field)
finally
(push field fields)
(return fields)))
谢谢。
您只使用一个 字段 数组。没关系。但是当你将它推送到 fields
列表变量时,你最好复制它。使用 copy-seq
.
或者在将旧字段数组推入字段列表后创建一个新字段数组。
我正在尝试使用以下函数使用 Common lisp 解析逗号分隔的字符串。对于 (separate-on-comma "a,b,c")
,我希望输出 ("a" "b" "c")
,但我得到的是 ("c" "c" "c")
。
我在这里想念什么?
(defun separate-on-comma (line)
(loop
with fields = ()
with field = (make-array 0 :element-type 'character :adjustable t :fill-pointer 0)
for x across line
when (char= x #\,)
do (push field fields)
and do (setf (fill-pointer field) 0)
else
do (vector-push-extend x field)
finally
(push field fields)
(return fields)))
谢谢。
您只使用一个 字段 数组。没关系。但是当你将它推送到 fields
列表变量时,你最好复制它。使用 copy-seq
.
或者在将旧字段数组推入字段列表后创建一个新字段数组。