4
我想從READ
用字符串比較用戶輸入,就像這樣:我怎樣才能比較用戶已輸入的字符串?
CL-USER 36 > (equalp (read) "same")
same
NIL
然而,正如你所看到的,即使我輸入「相同,」 EQUALP
說我輸入的字符串是不同的。我怎樣才能比較這兩個?
我想從READ
用字符串比較用戶輸入,就像這樣:我怎樣才能比較用戶已輸入的字符串?
CL-USER 36 > (equalp (read) "same")
same
NIL
然而,正如你所看到的,即使我輸入「相同,」 EQUALP
說我輸入的字符串是不同的。我怎樣才能比較這兩個?
您可以使用此:
CL-USER> (equalp (read-line) "same")
same
T
read
會返回一個符號:
CL-USER> (type-of (read))
same
SYMBOL
讀取解析的對象從打印形式輸入流 並建立這樣一個對象。
你只是想讀一個字符串,而read
解析輸入以及從它構造Lisp的對象。
爲了獲得串出read
,你必須使用字符串的「打印形式」,即把它們放在雙引號:
CL-USER> (equalp (read) "same")
"same"
T
(BTW:有string=
字符串比較; equalp
會忽略大小寫)。