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

  • #\退格键
  • #\标签
  • #\换行
  • #\页
  • #\返回
  • #\抹去

字符比较函数

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

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

下表提供了功能 -

区分大小写的函数 不区分大小写的函数 描述
字符= 字符等于 检查操作数的值是否全部相等,如果相等则条件成立。
字符/= 字符不等于 检查操作数的值是否全部不同,如果值不相等则条件成立。
字符< 无字符型 检查操作数的值是否单调递减。
字符> char-greaterp 检查操作数的值是否单调递增。
字符<= 字符不大于 检查任何左操作数的值是否大于或等于下一个右操作数的值,如果是,则条件为真。
字符>= 字符非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