【问题标题】:How to convert list to string in Emacs Lisp如何在 Emacs Lisp 中将列表转换为字符串
【发布时间】:2013-09-24 10:38:04
【问题描述】:

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

【问题讨论】:

    标签: string list emacs elisp


    【解决方案1】:

    我不确定您要实现什么,但format 将“stuff”转换为字符串。例如:

    (format "%s" your-list)
    

    将返回您的列表的表示。 message 内部使用格式,所以

    (message "%s" your-list)
    

    会打印出来

    【讨论】:

    • %S 可能比 %s 更好,以 Lisp 语法打印列表。
    【解决方案2】:

    (format) 将在字符串中嵌入括号,例如:

    ELISP> (format "%s" '("foo" "bar"))
    "(foo bar)"
    

    因此,如果您需要类似 Ruby/JavaScript 的 join(),则有 (mapconcat)

    ELISP> (mapconcat 'identity '("foo" "bar") " ")
    "foo bar"
    

    【讨论】:

      【解决方案3】:

      或者

      (prin1-to-string your-string)
      

      终于来点特别的了

      (princ your-string)
      

      【讨论】:

        【解决方案4】:
        M-x pp-eval-expression RET c-offsets-alist RET
        

        【讨论】:

          【解决方案5】:

          如果您需要将((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)))
          

          【讨论】:

          • 我不想去掉括号,我想按原样显示列表或树。如果您有一个字符串列表并且想要将其转换为 sting,那么除了子字符串之外,您还有其他选项。您可以创建一个函数来转换任何类型的字符串并使用(string-join (map 'symbol-name '(foo bar baz)) " "),这里我使用symbol-name,但它应该是any->string
          • 如果你这样称呼你的代码将毫无意义(convert-list-to-string '(foo bar (baz (quux))))我认为你应该问另一个问题,因为这不是我问题的答案。
          • 这只是我的解决方案,采用 Alexander Gromnitsky 的答案并去掉括号。我偶然发现了将((a b c d e)) 之类的列表转换为字符串"a b c d e" 的问题。这对我有用,我希望对其他人有所帮助。
          • 这看起来像是另一个问题的答案,如何将((a b c d e)) 转换为字符串"a b c d e"
          • @jcubic 问题是“如何在 Emacs Lisp 中将列表转换为字符串?”我发现你的问题试图得到我的答案。 Alexander Gromnitsky 回答了我的问题,我对其进行了调整。如果我发现你的问题 smb 也可能只需要我对他们相同问题的回答“如何在 Emacs Lisp 中将列表转换为字符串?”
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-03
          • 2013-10-31
          • 1970-01-01
          • 2023-02-23
          相关资源
          最近更新 更多