#\charname
¶[R7RS+] リテラルの文字オブジェクトを表現します。
リーダーは#\
に出会うと、まず次の文字を読み込みます。それが文字
()[]{}" \|;#
のいずれかならば、その文字自身となります。
そうでなければ、単語を構成しない文字に出会うまで文字が続けて読み込まれます。
もし一文字しか読まれなければ、その文字自身となります。そうでなければ
その単語が文字の名前として解釈されます。
それが有効な文字の名前でなければエラーとなります。
以下の文字の名前が認識されます。これらの文字の名前は大文字小文字を区別しません。
space
スペース (ASCII #x20)
newline, nl, lf
改行文字 (ASCII #x0a)
return, cr
復帰文字 (ASCII #x0d)
tab, ht
水平タブ (ASCII #x09)
page
フォームフィード、改ページ (ASCII #x0c)
alarm
ベル (ASCII #x07)
backspace
バックスペース (ASCII #x08)
escape, esc
エスケープ (ASCII #x1b)
delete, del
デリート (ASCII #x7f)
null
NUL文字 (ASCII #x00)
xN
N が16進表記の整数であるとき、Unicodeコードポイントが整数N であるような文字。これはR7RSの字句構文です。
uN
Nが4桁または8桁の16進数整数であるとき、UCSコードNであるような文字。
これはGaucheの古い構文です。新規のコードでは\xN
を使ってください。
#\newline ⇒ #\newline ; 改行文字 #\x0a ⇒ #\newline ; 改行文字 #\x41 ⇒ #\A ; ASCII文字 ’A’ #\x3042 ⇒ #\あ ; 平仮名「あ」 #\x2a6b2 ⇒ ; JISX0213 2-94-86
[R7RS base]
objが文字なら#t
を、そうでなければ#f
を返します。
[R7RS base] 文字を比較します。比較は内部の文字エンコーディングで行われます。
[R7RS char]
文字を、大文字小文字を区別せずに比較します。
比較はそれぞれの文字のfoldcaseの内部文字エンコーディングに基づいて行われます。
foldcaseについては下のchar-foldcase
を参照してください。
R7RSではこれらの手続きは(scheme char)
ライブラリにあります。
[R7RS char][SRFI-129]
文字charがそれぞれアルファベット
(Unicode文字カテゴリ Lu
、Ll
、Lt
、
Lm
、Lo
、Nl
)、
数字 (Unicode文字カテゴリ Nd
)、
空白文字 (Unicode文字カテゴリ Zs
、Zp
、Zl
)、
大文字 (Unicode文字カテゴリ Lu
)、
小文字 (Unicode文字カテゴリ Ll
)の時に真の値を返します。
R7RSではchar-title-case?
以外の手続きは
(scheme char)
ライブラリにあります。
char-title-case?
はSRFI-129で定義されます。
charがR7RSで識別子にエスケープなしで使える文字ならば#t
を、
そうでなければ#f
を返します。該当する文字は、ASCIIのアルファベットと数字、
拡張アルファベット! $ % & * + - . / : < = > ? ^ _ ~
、
文字カテゴリが
Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pd, Pc, Po, Sc, Sm, Sk, So, Coの
いずれかであるもの、および
Zero width non-joiner (U+200C)とZero width joiner (U+200D)です。
[R6RS] 文字charのUnicode general categoryを表す、以下のシンボルのいずれかを返します。
Cc | Other, Control |
Cf | Other, Format |
Cn | Other, Not Assigned |
Co | Other, Private Use |
Cs | Other, Surrogate |
Ll | Letter, Lowercase |
Lm | Letter, Modifier |
Lo | Letter, Other |
Lt | Letter, Titlecase |
Lu | Letter, Uppercase |
Mc | Mark, Spacing Combining |
Me | Mark, Enclosing |
Mn | Mark, Nonspacing |
Nd | Number, Decimal Digit |
Nl | Number, Letter |
No | Number, Other |
Pc | Punctuation, Connector |
Pd | Punctuation, Dash |
Pe | Punctuation, Close |
Pf | Punctuation, Final quote |
Pi | Punctuation, Initial quote |
Po | Punctuation, Other |
Ps | Punctuation, Open |
Sc | Symbol, Currency |
Sk | Symbol, Modifier |
Sm | Symbol, Math |
So | Symbol, Other |
Zl | Separator, Line |
Zp | Separator, Paragraph |
Zs | Separator, Space |
[R7RS base]
char->integer
は文字charのUnicodeコードポイント
整数値を返します。integer->char
は数値nをUnicodeコードポイントとする
文字を返します。有効な文字charに対して以下の式は常に真となります。
(eq? char (integer->char (char->integer char)))
対応する文字が無い数値をinteger->char
に渡した
場合の結果は不定です。
Deprecated.
それぞれchar->integer
およびinteger->char
と同じです。
Gaucheはかつて、utf-8以外の内部エンコーディングでもビルドすることができ、 その場合文字に対応する整数の文字コードはUnicodeコードポイントとは限りませんでした。 これらの手続きは確実にUnicode-コードポイントを扱いたい場合に使われました。
現在ではGaucheは内部エンコーディングにutf-8のみを使うので、 これらの手続きはもう必要なくなりました。
[R7RS char][SRFI-129] charの大文字、小文字、titlecase、foldcaseを それぞれ返します。 変換はUnicodeで定義された文字対文字のマッピングに従います。
R7RSは(scheme char)
ライブラリで、char-upcase
、
char-downcase
、char-foldcase
を定義しています。
char-titlecase
はSRFI-129で定義されます。
R6RSは全ての手続きを提供しています。
文字対文字のマッピングでは、一文字が複数文字に展開されるようなケースマッピングは
扱いません。有名な例はeszett (latin small letter sharp S, U+00df)で、
文字列のコンテキストでは二つの大文字のSへとマップされますが、
char-upcase #\ß
は単に #\ß を返します。
完全なマッピングが必要なら、gauche.unicode
モジュールの
string-upcase
等が利用できます
(フルセットの大文字小文字変換参照)。
文字charが radix進数の数字を構成するのに有効な文字であれば、
対応する整数が、そうでなければ#f
が返されます。
(digit->integer #\4) ⇒ 4 (digit->integer #\e 16) ⇒ 14 (digit->integer #\9 8) ⇒ #f
省略可能引数extended-range?に真の値が与えられると、
この手続きはASCIIの数字だけでなく、Nd
カテゴリに属する
すべての文字、例えば
FULLWIDTH DIGIT ZEROからNINE (U+ff10 - U+ff19) も認識します。
R7RSにはdigit-value
という手続きが定義されていて、それは
(digit->integer char 10 #t)
と等価です。
Common Lispには同様の手続きがdigit-char-p
というやや曖昧な名で定義されています。
digit->integer
の逆です。整数integerを radix進数 ひと桁で
表現するのに使われる文字を返します。integerがひと桁で表現できない数値の場合は
#f
が返されます。
(integer->digit 13 16) ⇒ #\d (integer->digit 10) ⇒ #f
省略可能引数basechar1はゼロに相当する文字を指定します。
デフォルトは#\0
です。ここに、例えばU+0660 (ARABIC-INDIC DIGIT ZERO)
を与えれば、整数をアラビア・インド数字に変換できます。
もうひとつの省略可能引数basechar2は、10を越える整数に使う文字の起点を
指定します。デフォルトは#\a
です。ここに#\A
を渡せば、
16進数表記で小文字のかわりに大文字を使うようになります。
Common Lispのdigit-char
に当たります。
Deprecated.
シンボルutf-8
を返します。
これは、1.0以前のGaucheのために書かれたコードの互換性のために残されています。
かつてはutf-8以外の内部エンコーディングでGaucheをコンパイルすることが可能でした。
ネイティブなマルチバイトエンコーディングスキームでサポートされている 文字エンコーディングスキームの名前を表す文字列のリストを返します。