4
私はそうのように、文字列でREAD
からのユーザ入力を比較したい:ユーザーが入力した文字列を比較するにはどうすればよいですか?
CL-USER 36 > (equalp (read) "same")
same
NIL
しかし、あなたは私が入力していても、見ることができるように「と同じ、」EQUALP
は私の入力文字列が異なっていると言います。どのように私はこれらの2つを比較できますか?
私はそうのように、文字列でREAD
からのユーザ入力を比較したい:ユーザーが入力した文字列を比較するにはどうすればよいですか?
CL-USER 36 > (equalp (read) "same")
same
NIL
しかし、あなたは私が入力していても、見ることができるように「と同じ、」EQUALP
は私の入力文字列が異なっていると言います。どのように私はこれらの2つを比較できますか?
あなたはこのためにを使用することができます。Hyperspecから
CL-USER> (type-of (read))
same
SYMBOL
:シンボルを返す
CL-USER> (equalp (read-line) "same")
same
T
read
を読むからオブジェクトの表示表現を解析し、入力ストリーム とそのようなオブジェクトを構築します。
read
が入力を解析し、そこからLispオブジェクトを構築するのに対し、あなたは、文字列を読むことをお勧めします。
read
のうち、文字列を取得するには、文字列の「印刷表現」を使用する必要があると思いますが、つまりは二重引用符でそれらを置く:
CL-USER> (equalp (read) "same")
"same"
T
(BTW:文字列の比較のためstring=
があります。equalp
大文字と小文字は無視されます)