在lisp中将数字转换为字符串

ely*_*hiv 20 lisp common-lisp itoa

我试图找到一个lisp函数来在数字和字符串之间进行转换,经过一些googling后,我喜欢一个具有相同名称的函数.当我进入(itoa 1)SLIME打印时:

Undefined function ITOA called with arguments (1) .
Run Code Online (Sandbox Code Playgroud)

我该如何进行转换?

ede*_*dem 41

从数字到字符串:

(write-to-string 5)
"5"
Run Code Online (Sandbox Code Playgroud)

您可以将字符串转换为任何数字符号:

(write-to-string 341 :base 10)
"341"
Run Code Online (Sandbox Code Playgroud)

从字符串到数字:

(parse-integer "5")
5
Run Code Online (Sandbox Code Playgroud)

有一些垃圾

(parse-integer " 5 something not a number" :junk-allowed t)
5
Run Code Online (Sandbox Code Playgroud)

或者用这个:

(read-from-string "23 absd")
23
Run Code Online (Sandbox Code Playgroud)

  • 不要在外部提供的字符串上使用`read-from-string`,或者至少将`*read-eval*`绑定为false.另外值得注意的是,通用数字解析是库`parse-number`. (2认同)

Pau*_*han 15

一个重量级的解决方案是使用FORMAT:

[2]> (format nil "~A" 1)
"1"
Run Code Online (Sandbox Code Playgroud)

还有WRITE-TO-STRING:

[3]> (write-to-string 10)
"10"
Run Code Online (Sandbox Code Playgroud)

  • 感谢您链接到 CLHS。这有助于使这个答案比其他方式更有用。 (2认同)