Lisp: 将数字转换为字符串

3

有什么好的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…))使一切工作正常,除了我缺少一个将数字转换为字符串或其他序列以连接到字符串的函数。

或者,当然,如果有人能够命名一个Common Lisp函数,可以直接将符号和数字连接成一个符号,就像这样:foo 0 -> foo0。那就更好了。

2个回答

6
(intern (format nil "~a~a" "FOO" 42) "WHAT-EVER-PACKAGE-YOU-WANT")

1
Rainer,这个方法很完美,除了符号前后有 "|":|foo42|,而不是 foo42,对我的应用程序来说有问题。有没有简单的方法得到 foo42 而不是 |foo42|? - undefined
2
这些只是为了告诉读者在阅读时不要将打印的表示转换为大写。 - undefined
所以,名为"foo42"的符号表示为|foo42|,而名为"FOO42"的符号可以表示为foo42FOO42Foo42fOO42或其他任何形式。 - undefined
谢谢,Rainer和Svante!这个回答线程的解决方案让我能够在不通过字符串的情况下连接我的符号。 - undefined

2
尽管我在 Stack Overflow 中搜索了“lisp”,“number”和“string”等多种组合,但在发布问题之前,我仍然没有找到 write-to-string 或类似的内容,直到 Stack Overflow 告诉我有哪些与我的问题相关。无论如何,write-to-strings 可以很好地将数字转换为字符串:在Lisp中将数字转换为字符串。但是,直接将符号和数字连接到符号上仍然更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接