【发布时间】:2013-09-24 10:38:04
【问题描述】:
如何将列表转换为字符串,以便可以使用它调用insert 或message?我需要显示c-offsets-alist,但我得到Wrong type argument: char-or-string-p 用于插入或Wrong type argument: stringp 用于消息。
【问题讨论】:
如何将列表转换为字符串,以便可以使用它调用insert 或message?我需要显示c-offsets-alist,但我得到Wrong type argument: char-or-string-p 用于插入或Wrong type argument: stringp 用于消息。
【问题讨论】:
我不确定您要实现什么,但format 将“stuff”转换为字符串。例如:
(format "%s" your-list)
将返回您的列表的表示。 message 内部使用格式,所以
(message "%s" your-list)
会打印出来
【讨论】:
%S 可能比 %s 更好,以 Lisp 语法打印列表。
(format) 将在字符串中嵌入括号,例如:
ELISP> (format "%s" '("foo" "bar"))
"(foo bar)"
因此,如果您需要类似 Ruby/JavaScript 的 join(),则有 (mapconcat):
ELISP> (mapconcat 'identity '("foo" "bar") " ")
"foo bar"
【讨论】:
或者
(prin1-to-string your-string)
终于来点特别的了
(princ your-string)
【讨论】:
M-x pp-eval-expression RET c-offsets-alist RET
【讨论】:
如果您需要将((a b c d e)) 之类的列表转换为字符串"a b c d e",那么此函数可能会有所帮助:
(defun convert-list-to-string (list)
"Convert LIST to string."
(let* ((string-with-parenthesis (format "%S" list))
(end (- (length string-with-parenthesis) 2)))
(substring string-with-parenthesis 2 end)))
【讨论】:
(string-join (map 'symbol-name '(foo bar baz)) " "),这里我使用symbol-name,但它应该是any->string。
(convert-list-to-string '(foo bar (baz (quux))))我认为你应该问另一个问题,因为这不是我问题的答案。
((a b c d e)) 之类的列表转换为字符串"a b c d e" 的问题。这对我有用,我希望对其他人有所帮助。
((a b c d e)) 转换为字符串"a b c d e"