% 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
での
比較においては常に等しいです。