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
的帮助。

是否也要忽略仅包含空格的字符串?例如,