Lisp 忽略mapconcat中的空字符串?
我试图插入一个逗号分隔的字符串,该字符串由用户输入的几个值生成。如果某个特定值为空,我不想插入该值。我的问题是,当函数返回Lisp 忽略mapconcat中的空字符串?,lisp,elisp,Lisp,Elisp,我试图插入一个逗号分隔的字符串,该字符串由用户输入的几个值生成。如果某个特定值为空,我不想插入该值。我的问题是,当函数返回nil时,mapconcat仍在插入分隔符。我还尝试过使用列表中的控件,而不是具有相同结果的函数来执行此操作 (insert (mapconcat (function (lambda (x) (unless (string-equal x "") x)))) (list input-a input-b input-c)
nil
时,mapconcat
仍在插入分隔符。我还尝试过使用列表中的控件,而不是具有相同结果的函数来执行此操作
(insert (mapconcat
(function (lambda (x) (unless (string-equal x "") x))))
(list input-a input-b input-c)
", "))
如果来自用户的值是“foo”
、“
”和“bar”
,则输出将是“foo,bar”
;我希望它是“foo,bar”
。当输入值为空时,如何防止插入分隔符?您的列表包含nil
值,并且mapconcat
仍将处理这些值,因此您需要首先从列表中删除不需要的项
具体如何做到这一点将取决于您是否需要保留列表的原始形式。以下是一个不修改原始列表的选项:
(设置我的列表(列表“foo”“bar”))
(mapcontat’identity)
(删除“我的列表”)
", ")
如果您不需要原件,可以使用delete
而不是remove
;但如果需要,请务必阅读delete
的帮助。是否也要忽略仅包含空格的字符串?例如,”
?