如何比较用户输入的字符串?

时间:2011-09-10 02:50:46

标签: lisp common-lisp

我想将READ的用户输入与字符串进行比较,如下所示:

CL-USER 36 > (equalp (read) "same")
same
NIL

但是,正如您所看到的,即使我键入“相同”,EQUALP表示我的输入和字符串不同。我如何比较这两个?

1 个答案:

答案 0 :(得分:5)

您可以使用read-line

CL-USER> (equalp (read-line) "same")
same
T

read会返回一个符号:

CL-USER> (type-of (read))
same
SYMBOL

来自Hyperspec

  

read从input-stream中解析对象的打印表示   并建立这样一个对象。

您只想读取字符串,而read 解析输入并从中构造Lisp对象。

要从read中获取字符串,您必须使用字符串的“打印表示”,即将它们用双引号括起来:

CL-USER> (equalp (read) "same")
"same"
T

(顺便说一句:字符串比较有string=; equalp会忽略大小写。)