- LISP 教程
- LISP - 首页
- LISP - 概述
- LISP - 环境
- LISP - 程序结构
- LISP - 基本语法
- LISP - 数据类型
- LISP - 宏
- LISP - 变量
- LISP - 常量
- LISP - 运算符
- LISP - 决策
- LISP - 循环
- LISP - 函数
- LISP - 谓词
- LISP - 数字
- LISP - 字符
- LISP - 数组
- LISP - 字符串
- LISP - 序列
- LISP - 列表
- LISP - 符号
- LISP - 向量
- LISP - 集合
- LISP - 树
- LISP - 哈希表
- LISP - 输入与输出
- LISP - 文件 I/O
- LISP - 结构体
- LISP - 包
- LISP - 错误处理
- LISP - CLOS
- LISP 有用资源
- Lisp - 快速指南
- Lisp - 有用资源
- Lisp - 讨论
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
广告