Emacs Lisp中是否有与split-string
相反的函数,即将列表元素连接到由给定分隔符分隔的字符串中?换句话说,是否存在给出列表的函数,例如("foo" "bar" "baz")
和分隔符,例如", "
,将该列表作为由该分隔符分隔的字符串返回,例如"foo, bar, baz"
。
Common Lisp seems to have such a function但是Emacs Lisp中具有相同名称的函数format
是一个完全不同的函数。
答案 0 :(得分:36)
我认为您正在寻找mapconcat:
mapconcat
将函数应用于序列的每个元素:结果, 必须是字符串,连接。在每对结果之间 字符串,mapconcat
插入字符串分隔符。通常分隔符 包含空格或逗号或其他合适的标点符号。
答案 1 :(得分:17)
Emacs 25有string-join
:
(string-join '("one" "two" "three") ", ") ; ==> "one, two, three"
答案 2 :(得分:8)
如果你在Elisp中大量使用字符串操作,我建议你安装一个库s.el
,它有一个庞大而一致的字符串API。对于您的任务,它有一个函数s-join
:
(s-join "+" '("abc" "def" "ghi")) ;; => "abc+def+ghi"
(s-join "\n" '("abc" "def" "ghi")) ;; => "abc\ndef\nghi"
答案 3 :(得分:4)
根据您正在做的事情,可能会有更好的功能,例如,如果您正在构建命令行参数,请使用combine-and-quote-strings
为您完成工作。
(combine-and-quote-strings '("foo" "bar" "baz") ", ")
"foo, bar, baz"