我试图插入一个逗号分隔的字符串,该字符串由用户输入的几个值生成如果某个值为空,则不希望插入该值我的问题是当函数返回mapconcat
时nil
仍在插入分隔符我还尝试使用列表中的unless
控件而不是具有相同结果的函数来执行此操作。
(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
仍将处理这些值,因此您需要首先从列表中删除不需要的项。
具体如何做到这一点将取决于您是否需要将列表保留为其原始形式。下面是一个不修改原始列表的选项:
(setq my-list (list "foo" "" "bar"))
(mapconcat 'identity
(remove "" my-list)
", ")
如果不需要原件,可以使用
delete
而不是remove
;但如果需要,请确保阅读delete
的帮助。