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
廣告