LISP - 字符

在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