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