要在常见的lisp中列出没有#\的字符串

r1s*_*1si 7 lisp common-lisp

我想把String变成列表.例如,http =>(http).

我尝试:

(defun string-to-list (s)
  (assert (stringp s) (s) "~s :questa non e una stringa")
  (coerce s 'list))
Run Code Online (Sandbox Code Playgroud)

但如果我这样做

(string-to-list "http")
Run Code Online (Sandbox Code Playgroud)

结果:

(#\h #\t #\t #\p).
Run Code Online (Sandbox Code Playgroud)

我可以删除#\?提前致谢 :)

Rai*_*wig 19

为什么要这么做?你要问的是将一个字符串(一维字符数组)拆分成一个符号列表.你真的想要吗?

#\h 是打印的字符对象.

您可以以不同方式打印它们

CL-USER 8 > (princ #\h)
h

CL-USER 9 > (prin1 #\h)
#\h
Run Code Online (Sandbox Code Playgroud)

让我们使用PRINC以下方式打印列表:

CL-USER 10 > (map nil #'princ (coerce "Hello!" 'list))
Hello!
Run Code Online (Sandbox Code Playgroud)

顺便说一句,因为字符串,向量和列表是序列,你可以直接通过字符串MAP ...

CL-USER 11 > (map nil #'princ "Hello!")
Hello!
Run Code Online (Sandbox Code Playgroud)