% Function CHAR-UPCASE, CHAR-DOWNCASE
Function CHAR-UPCASE, CHAR-DOWNCASE
char-upcase character => corresponding-character
char-downcase character => corresponding-character
character, corresponding-character - 文字
characterが小文字なら、char-upcaseは大文字を返却します。
それ以外はただ引数の文字をそのまま返却します。
characterが大文字なら、char-downcaseは小文字を返却します。
それ以外はただ引数の文字をそのまま返却します。
characterと返却値では、ただ文字コードの属性のみが違っており、 その他のすべての実装定義の属性は保存されます。
(char-upcase #\a) => #\A
(char-upcase #\A) => #\A
(char-downcase #\a) => #\a
(char-downcase #\A) => #\a
(char-upcase #\9) => #\9
(char-downcase #\9) => #\9
(char-upcase #\@) => #\@
(char-downcase #\@) => #\@
;; 注意:次の例文は、もしCHAR-CODE-LIMITの値が非常に大きい実装の場合は、
;; おそらく非常に長い時間かかるだろう。
(dotimes (code char-code-limit)
(let ((char (code-char code)))
(when char
(unless (cond ((upper-case-p char) (char= (char-upcase (char-downcase char)) char))
((lower-case-p char) (char= (char-downcase (char-upcase char)) char))
(t (and (char= (char-upcase (char-downcase char)) char)
(char= (char-downcase (char-upcase char)) char))))
(return char)))))
=> NIL
なし。
もしcharacterが文字ではなかったら、型type-errorのエラーが生じます。
upper-case-p, alpha-char-p, 13.1.4.3. 文字のケース, 13.1.10. 処理系実装のスクリプトの説明
もしcorresponding-characterがcharacterと違う場合は、 corresponding-characterとcharacter両方に ケース(大文字と小文字のこと)があるということになります。
char-equalは文字の比較の際にケースを無視するため、
corresponding-characterはcharacterとchar-equalでの
比較においては常に等しいです。