LISP - 字符

在 LISP 中,字符表示为字符类型的数据对象。

您可以在字符本身之前的 #\ 之前表示字符对象。 例如#\a表示字符a。

空格和其他特殊字符可以在字符名称前加上 #\ 来表示。 例如,#\SPACE 表示空格字符。

以下示例演示了这一点 −

示例

创建一个名为 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 允许在代码中使用以下特殊字符。 他们被称为半标准字符。

  • #\退格键
  • #\Tab
  • #\换行
  • #\页
  • #\返回
  • #\Routout

字符比较函数

数字比较函数和运算符(例如 < 和 >)不适用于字符。 Common LISP 提供了另外两组函数来比较代码中的字符。

一组区分大小写,另一组不区分大小写。

下表提供了功能 −

区分大小写的函数 不区分大小写的函数 描述
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 #\b))
(terpri)
(write (char= #\a #\a))
(terpri)
(write (char= #\a #\A))
(terpri)
   
;case-insensitive comparision
(write (char-equal #\a #\A))
(terpri)
(write (char-equal #\a #\b))
(terpri)
(write (char-lessp #\a #\b #\c))
(terpri)
(write (char-greaterp #\a #\b #\c))

执行代码时,会返回以下结果 −

NIL
T
NIL
T
NIL
T
NIL