如何将列表转换为字符串,以便可以调用insert
或message
使用它?我需要显示c-offsets-alist
,但我得到Wrong type argument: char-or-string-p
了插入或Wrong type argument: stringp
消息。
问问题
17888 次
5 回答
55
我不确定您要实现什么,但format
将“东西”转换为字符串。例如:
(format "%s" your-list)
将返回您的列表的表示。 message
在内部使用格式,所以
(message "%s" your-list)
将打印它
于 2013-09-24T10:45:20.887 回答
31
(format)
将在字符串中嵌入括号,例如:
ELISP> (format "%s" '("foo" "bar"))
"(foo bar)"
因此,如果您需要类似于 Ruby/JavaScript 的类似物join()
,则有(mapconcat)
:
ELISP> (mapconcat 'identity '("foo" "bar") " ")
"foo bar"
于 2015-09-15T07:42:08.537 回答
10
或者
(prin1-to-string your-string)
终于有一些特别的了
(princ your-string)
于 2013-09-24T11:17:18.840 回答
1
M-x pp-eval-expression RET c-offsets-alist RET
于 2013-09-24T20:12:01.113 回答
0
如果您需要将列表转换((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)))
于 2021-05-02T14:58:11.317 回答