Next: caseテーブル, Previous: カスタムフォーマット文字列, Up: 文字列と文字 [Contents][Index]
case変換関数(character case functions)は、1つの文字または文字列中の大文字小文字を変換します。関数は通常、アルファベット文字(英字‘A’から‘Z’と‘a’から‘z’、同様に非ASCIIの英字)だけを変換し、それ以外の文字は変換しません。caseテーブル(case table。caseテーブルを参照されたい)で指定することにより、caseの変換に異なるマッピングを指定できます。
これらの関数は引数として渡された文字列は変更しません。
以下の例では文字‘X’と‘x’を使用します。これらのASCIIコードは88と120です。
この関数はstring-or-char(文字か文字列)を小文字に変換する。
string-or-charが文字列なら、この関数は引数の大文字を小文字に変換した新しい文字列をリターンする。string-or-charが文字なら、この関数は対応する小文字(整数)をリターンする。元の文字が小文字か非英字ならリターン値は元の文字と同じ。
(downcase "The cat in the hat") ⇒ "the cat in the hat" (downcase ?X) ⇒ 120
この関数はstring-or-char(文字か文字列)を大文字に変換する。
string-or-charが文字列なら、この関数は引数の小文字を大文字に変換した新しい文字列をリターンする。string-or-charが文字なら、この関数は対応する大文字(整数)をリターンする。元の文字が大文字か非英字ならリターン値は元の文字と同じ。
(upcase "The cat in the hat") ⇒ "THE CAT IN THE HAT" (upcase ?x) ⇒ 88
この関数は文字列や文字をキャピタライズ(capitalize: 先頭が大文字で残りは小文字)する。この関数はstring-or-charが文字列ならstring-or-charの各単語をキャピタライズした新たなコピーをリターンする。これは各単語の最初の文字が大文字に変換され、残りは小文字に変換されることを意味する。
単語の定義はカレント構文テーブル(current syntax table)の単語構成構文クラス(word constituent syntax
class)に割り当てられた、連続する文字の任意シーケンスである(構文クラスのテーブルを参照)。case-symbols-as-words
が非nil
の場合には、シンボル構成構文クラス(symbol
constituent syntax class)に割り当てられた文字は単語構成文字ともみなされる。
string-or-charが文字ならこの関数はupcase
と同じことを行なう。
(capitalize "The cat in the hat") ⇒ "The Cat In The Hat"
(capitalize "THE 77TH-HATTED CAT") ⇒ "The 77th-Hatted Cat"
(capitalize ?x) ⇒ 88
この関数はstring-or-charが文字列なら、string-or-charの中の単語の頭文字をキャピタライズして、頭文字以外の文字は変更しない。この関数はstring-or-charの各単語の頭文字が大文字に変換された新しいコピーをリターンする。
この関数における単語の定義は上述したcapitalize
での定義に準ずる。case-symbols-as-words
が単語構成文字に及ぼす効果も同様。
upcase-initials
の引数が文字なら、upcase-initials
の結果はupcase
と同じ。
(upcase-initials "The CAT in the hAt") ⇒ "The CAT In The HAt"
case変換コードポイントを1対1でマップするものではなく、結果の文字列長は引数の文字列長と異なるかもしれません。さらに文字を渡すことによりリターンされる型にも文字が強制されるので、関数は正しい置換を行えずに1文字の文字列を処理する場合とは結果が異なるかもしれません。たとえば:
(upcase "fi") ; 注意: 1文字の合字 "fi" ⇒ "FI"
(upcase ?fi) ⇒ 64257 ; つまり ?fi
これを避けるためにはcase関数のいずれかに文字を渡す前にstring
関数を使用して文字列に変換しなければなりません。もちろん結果の長さについて仮定はできません。
他の文字も特別なcase変換ルールをもつことができます。これらの文字はすべてUnicode標準によって定義された文字プロパティspecial-uppercase
、special-lowercase
あるいはspecial-titlecase
をもっています(文字のプロパティを参照)。これらのプロパティはカレントcaseテーブルをオーバーライドする特別なcase変換ルールを定義しています(caseテーブルを参照)。
文字列を比較する関数(caseの違いを無視するものや、オプションでcaseの違いを無視できるもの)については、文字および文字列の比較を参照されたい。