是否有将字符串连接到分隔字符串的函数?

时间:2012-10-21 16:02:28

标签: elisp

Emacs Lisp中是否有与split-string相反的函数,即将列表元素连接到由给定分隔符分隔的字符串中?换句话说,是否存在给出列表的函数,例如("foo" "bar" "baz")和分隔符,例如", ",将该列表作为由该分隔符分隔的字符串返回,例如"foo, bar, baz"

Common Lisp seems to have such a function但是Emacs Lisp中具有相同名称的函数format是一个完全不同的函数。

4 个答案:

答案 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"