Emacs Lisp 中是否有与 相反的功能,即将split-string
列表的元素连接到由给定分隔符分隔的字符串中?换句话说,是否有一个函数给定一个列表,例如("foo" "bar" "baz")
,和一个定界符,例如", "
,返回该列表作为由该定界符定界的字符串,例如"foo, bar, baz"
。
Common Lisp 似乎有这样的功能,但在 Emacs Lisp 中同名的功能format
,是一个完全不同的功能。
Emacs Lisp 中是否有与 相反的功能,即将split-string
列表的元素连接到由给定分隔符分隔的字符串中?换句话说,是否有一个函数给定一个列表,例如("foo" "bar" "baz")
,和一个定界符,例如", "
,返回该列表作为由该定界符定界的字符串,例如"foo, bar, baz"
。
Common Lisp 似乎有这样的功能,但在 Emacs Lisp 中同名的功能format
,是一个完全不同的功能。
我认为您正在寻找mapconcat:
mapconcat
将函数应用于序列的每个元素:将结果(必须是字符串)连接起来。在每对结果字符串之间,mapconcat
插入字符串分隔符。通常分隔符包含空格或逗号或其他合适的标点符号。
自 24.4 以来, Emacs 已string-join
成为subr-x.el
:
(eval-when-compile (require 'subr-x))
(string-join '("one" "two" "three") ", ") ; ==> "one, two, three"
subr-x.el
还包含其他有用的(字符串操作)函数 - 来自 24.4 发行说明:
New library subr-x.el for misc helper functions
hash-table-keys
hash-table-values
string-blank-p
string-empty-p
string-join
string-reverse
string-trim-left
string-trim-right
string-trim
string-remove-prefix
string-remove-suffix
根据您所做的工作,可能会有更好的功能,例如,如果您正在构建命令行参数,请使用combine-and-quote-strings
which 为您工作。
(combine-and-quote-strings '("foo" "bar" "baz") ", ")
"foo, bar, baz"