字元研究

字元研究

學習練習

簡介

字元

和其他程式語言一樣,Common Lisp 也有字元。 字元是物件,代表一段文字(例如字串或文字串流)中的一個項目。

字元可以和整數互相轉換。(但字元不是整數,它們是不同的型別。)

字元的表示方式,是在#\後面接上它的名稱。 常見字元(例如「A」「b」「9」「!」)的「名稱」就是字元本身:所以#\A、#\b、#\9和#\!。 有些非圖形字元(例如空白或換行)的名稱則像是#\Space和#\Newline。

標準只要求實作支援 96 個字元(拉丁字母的大小寫(A-Za-z)、數字(0-9)、空白(#\Space)、換行(#\Newline),以及標點符號(例如 !$"'(),_-./:;?+<=>#%&*@[\]{|}`^~))。 不過大多數實作提供的字元更多,有些甚至支援所有 Unicode 字元。

比較字元。

字元可以用char=或char-equal比較是否相等(後者不分大小寫)。

字元可以用char<、char>、char<=、char>=等函式比較大小,也可以用不分大小寫的char-lessp和char-greaterp。

字元的型別

字元可以分成不同型別:圖形、字母、英數字、數字、大寫或小寫。 一個字元可以同時屬於多種型別,例如大寫字母。 每一種型別都有對應的述詞:graphic-char-p、alpha-char-p、alphanumericp、digit-char-p、upper-case-p和lower-case-p。

轉換字元大小寫

有些字元有大寫和小寫之分,可以用char-upcase和char-downcase互相轉換。

說明

Lewis 是一位年輕的 Lisp 外星人,他正在進行自己的人類字母專案,需要完成一些工作,於是問你能不能幫他寫幾個他會用到的函式。

1. 比較字元

Lewis 需要一個函式來比較兩個字元,判斷第一個字元是 greater-than、less-than 還是 equal-to 第二個字元。 請寫一個函式compare-chars,它接受兩個字元,並視情況回傳:greater-than、:less-than或:equal-to。 這個函式在比較時應區分大小寫。

2. 判斷字元的「大小」

Lewis 需要知道字元是「big」(大寫字元)還是「little」(小寫字元),或者兩者皆非時的「no-size」。 請寫一個函式size-of-char,它會依字元的「大小」回傳:big、:small或:no-size:

3. 改變字元的「大小」

Lewis 可能需要把「big」字元變成「small」,或把「small」字元變成「big」。 請寫一個函式change-size-of-char,它接受兩個參數:一個字元和想要的大小(:big或:small)。 它應該回傳大小正確的對應字元。

4. 判斷字元的「類型」

Lewis 不僅需要知道字元的「大小」,還需要知道它的「類型」。 請寫一個函式type-of-char,如果字元是字母字元,就回傳:alpha;如果是數字字元,就回傳:numeric;如果是空白字元,就回傳:space;如果是換行字元,就回傳:newline;其他情況則回傳:unknown。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Common Lisp Exercism

準備好開始 字元研究 了嗎?

註冊 Exercism,透過 27 個概念92 個練習 和真人引導來學習並精通 Common Lisp,全部免費。