Lisp - 字符



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

您可以通过在字符本身之前添加 #\ 来表示字符对象。例如,#\a 表示字符 a。

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

以下示例演示了这一点 -

示例

创建一个名为 main.lisp 的新源代码文件,并在其中键入以下代码。

main.lisp

; print A
(write 'a)
; terminate printing
(terpri)
; print #\a
(write #\a)
; terminate printing
(terpri)
; print char a
(write-char #\a)
; terminate printing
(terpri)
; error
(write-char 'a)

输出

执行代码时,它将返回以下结果 -

A
#\a
a
*** - WRITE-CHAR: argument A is not a character

特殊字符

Common LISP 允许在代码中使用以下特殊字符。它们被称为半标准字符。

  • #\Backspace
  • #\Tab
  • #\Linefeed
  • #\Page
  • #\Return
  • #\Rubout

字符比较函数

数值比较函数和运算符(如 < 和 >)不适用于字符。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 的源代码文件,并在其中键入以下代码。

main.lisp

; case-sensitive comparison
; compare and print a vs b
(write (char= #\a #\b))
; terminate printing
(terpri)
; compare and print a vs a
(write (char= #\a #\a))
; terminate printing
(terpri)
; compare and print a vs A
(write (char= #\a #\A))
; terminate printing
(terpri)
   
;case-insensitive comparision
; compare and print a vs A
(write (char-equal #\a #\A))
; terminate printing
(terpri)
; compare and print a vs b
(write (char-equal #\a #\b))
; terminate printing
(terpri)
; check and print a vs b and c
(write (char-lessp #\a #\b #\c))
; terminate printing
(terpri)
; check and print a vs b and c
(write (char-greaterp #\a #\b #\c))

输出

执行代码时,它将返回以下结果 -

NIL
T
NIL
T
NIL
T
NIL
广告