【问题标题】:Lisp: Convert Number to StringLisp:将数字转换为字符串
【发布时间】:2013-10-31 16:06:24
【问题描述】:

Common Lisp 有什么好的函数可以将数字转换为字符串?

我希望将数字转换为字符串,如下所示: 42 -> “42”

最终我想将一个字符串和一组数字连接成一组符号,例如:

(loop for i upto 3
 collect (concatenate 'string "foo" (some-conversion-function i)) into stngs
 finally (return (mapcar #'read-from-strings stngs)))

-> foo0 foo1 foo2 foo3

所有数字都是整数。

我已经使用 (read-from-string (concatenate 'string ...)) 让所有东西都正常工作,只是我缺少一个将数字转换为字符串或其他序列的函数,该函数将连接成字符串.

或者,当然,如果我可以完全跳过字符串并将符号和数字连接成一个符号,那当然会很棒,如下所示: 富 0 -> 富 0 …如果有人可以命名一个直接连接符号的 Common Lisp 函数。

【问题讨论】:

    标签: string numbers lisp concatenation


    【解决方案1】:

    Grr,尽管我在发布问题之前一直在 Stack Overflow 搜索“lisp”、“数字”和“字符串”的各种组合,但直到 Stack Overflow 决定向我展示之前,我都没有找到 write-to-string 或类似内容什么与我的问题“相关”。 >|O

    无论如何,write-to-strings 非常适合将数字转换为字符串: converting number to string in lisp

    但最好将符号和数字直接连接到符号。

    【讨论】:

      【解决方案2】:
      (intern (format nil "~a~a" "FOO" 42) "WHAT-EVER-PACKAGE-YOU-WANT")
      

      【讨论】:

      • Rainer,这将是完美的,除了符号有“|”前置和附加到它们:|foo42|而不是 foo42,这对我的应用程序来说是有问题的。有没有简单的方法来获取 foo42 而不是 |foo42|?
      • 这些只是告诉读者在阅读时不要大写印刷的表示。
      • 所以,名称为“foo42”的符号表示为|foo42|,名称为“FOO42”的符号可表示为foo42,FOO42,Foo42, fOO42 或其他。
      • 谢谢你,Rainer 和 Svante!这个答案线程的解决方案让我无需通过字符串即可连接我的符号。
      猜你喜欢
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 2012-09-27
      相关资源
      最近更新 更多