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