在LISP中,字符被表示为字符类型的数据对象。
可以记#前字符本身之前的字符的对象。例如,#一个表示字符a。
空格和其它特殊字符可以通过#前面的字符的名称前表示。例如,#空格代表空格字符。
下面的例子演示了这一点:
示例
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(write 'a) (terpri) (write #a) (terpri) (write-char #a) (terpri) (write-char 'a)
当执行以上代码,它返回以下结果:
A #a a *** - WRITE-CHAR: argument A is not a character
特殊字符
Common Lisp允许使用以下特殊字符在代码。他们被称为半标准字符。
-
#Backspace
-
#Tab
-
#Linefeed
-
#Page
-
#Return
-
#Rubout
字符比较函数
数字比较函数和运算符,如,< 和 >上字符不工作。 Common Lisp提供了另外两组的功能,在代码中比较字符。
一组是区分大小写的,而另一个不区分大小写。
下表提供的功能:
Case Sensitive Functions | Case-insensitive Functions | 描述 |
---|---|---|
char= | char-equal | 检查如果操作数的值都相等与否,如果是的话那么条件为真。 |
char/= | char-not-equal | 检查如果操作数的值都不同,或没有,如果值不相等,则条件为真。 |
char< | char-lessp | 检查如果操作数的值单调递减。 |
char> | char-greaterp | 检查如果操作数的值单调递增。 |
char<= | char-not-greaterp | 如有左操作数的值大于或等于下一个右操作数的值,如果是则条件为真检查。 |
char>= | char-not-lessp | 如有左操作数的值小于或等于其右操作数的值,如果是,则条件为真检查。 |
示例
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
; case-sensitive comparison (write (char= #a #)) (terpri) (write (char= #a #a)) (terpri) (write (char= #a #A)) (terpri) ;case-insensitive comparision (write (char-equal #a #A)) (terpri) (write (char-equal #a #)) (terpri) (write (char-lessp #a # #c)) (terpri) (write (char-greaterp #a # #c))
当执行以上代码,它返回以下结果:
NIL
T
NIL
T
NIL
T
NIL