37

如何将列表转换为字符串,以便可以调用insertmessage使用它?我需要显示c-offsets-alist,但我得到Wrong type argument: char-or-string-p了插入或Wrong type argument: stringp消息。

4

5 回答 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 回答