Common Lisp中的字符串比较

use*_*845 0 lisp functional-programming common-lisp

我是Common Lisp和Functional编程的新手.我有一个函数让我们称之为"wordToNumber",我希望它检查输入字符串是否只有"一个""两个""三个"等等(0-9).我想返回1 2 3等所以(wordToNumber"one")应该输出数字1.我在使用eq和eql时遇到了一些麻烦,但是它没有用,从我读到的是比较内存位置而非实际字符串.有没有更容易的方法来解决这个问题,或者有什么方法来比较字符串.我需要任何示例纯函数编程,没有循环和东西.这是我正在为学校工作的项目的一小部分.

哦,对于字符串比较,我现在只使用一个简单的函数,如下所示:

(defun wordToNumber(x)
     (if(eq 'x "one")(return-from wordToNumber 1)))
Run Code Online (Sandbox Code Playgroud)

并用它调用它:( wordToNumber"one")继续让Nil返回

谢谢你的帮助

Bar*_*mar 6

比较字符串的函数是string=string-equal,取决于您是否希望比较区分大小写.

当你想比较一个变量的值时,你不能引用它,因为引用的目的是为了防止评估.

(defun word-to-number (x)
    (cond ((string-equal x "one") 1)
          ((string-equal x "two") 2)
          ((string-equal x "three") 3)
          ...
          ))
Run Code Online (Sandbox Code Playgroud)