For Gauche 0.9.5


Next: , Previous: , Up: 組み込みライブラリ   [Contents][Index]

6.11 文字集合

Builtin Class: <char-set>

文字の集合を取り扱う、文字集合(キャラクタセット)のクラスです。 Gaucheは文字集合オブジェクトのサポートと、 ある文字がその集合に属するかどうかを調べる手続きを言語組み込みで持っています。

コレクションプロトコル (コレクションフレームワーク参照) を実装しているので、 gauche.collectionで提供される標準のコレクションメソッドが使えます。

<char-set>のインスタンスは文字に関数のように適用することができ、 その文字が文字集合に属するかどうかを判定する述語として機能します。 下記のchar-set-contains?を参照してください。

文字集合に関する他の操作、例えば集合演算などは、SRFI-14モジュール (文字集合ライブラリ参照) で提供されています。

Reader Syntax: #[char-set-spec]

この構文で、リテラル文字集合を記述することができます。 char-set-specには集合に含める文字を列挙します。 次の特殊なシーケンスを含めることができます。

x-y

文字xと文字yの間の文字全て。xyも含みます。 xyよりも内部文字コードで比較して小さくなければなりません。

^

カレットがchar-set-specの最初に来た場合、以降に示される文字集合の 補集合がこの文字集合となります。

\xN;

UnicodeコードポイントがN(16進数表記)の文字。

\s

空白文字。

\S

空白でない文字。(\sの補集合)

\d

10進数の数字

\D

\dの補集合

\w

単語を構成する文字の集合(アルファベット、数字、アンダースコア)

\W

\Wの補集合

\\

バックスラッシュ文字

\-

マイナス文字

\^

カレット文字

[:alnum:] …

POSIX流文字集合表記。以下の文字集合名が認識されます: alnum, alpha, blank, cntrl, digit, graph, lower, print, punct, space, upper, xdigit

#[aeiou]     ; 母音文字’a’, ’e’, ’i’, ’o’, ’u’の集合
#[a-zA-Z]    ; アルファベット
#[[:alpha:]] ; アルファベット (POSIX表記)
#[\\\-]      ; バックスラッシュとマイナス文字
#[]          ; 空の文字集合
#[ぁ-ん]     ; 平仮名の集合
#[\x0d;\x0a;\x3000;]  ; リターン, 改行, 全角空白

互換性への注: 以前は、\xNN (2桁固定の16進数、終端のセミコロン無し) を文字と認識していました。 例えば#[\x0d\x0a]はリターン文字と改行文字セットを意味していました。 互換性のため、終端のセミコロンが見当たらない場合は古い構文もサポートされます。 しかし曖昧な場合もあります。#[\x0a;]は新しい構文では 改行文字のみのセットですが、古い構文では改行文字とセミコロンになります。

リーダのモードをleagcyにセットすると、常に古い構文で認識されます。 リーダのモードをwarn-legacyにセットすると、 デフォルトと同じように振る舞いますが、古い構文を見つけた場合は警告が出力されます。 詳しくはリーダー字句モードを参照してください。

古い構文と新しい構文の両方で動作するコードが必要な場合は、\uエスケープを 使ってください。

Function: char-set? obj

[SRFI-14] objが文字集合であれば真の値を返します。

Function: char-set-contains? char-set char

[SRFI-14] 文字集合char-setが文字charを含んでいれば真の値を返します。

(char-set-contains? #[a-z] #\y) ⇒ #t
(char-set-contains? #[a-z] #\3) ⇒ #f

(char-set-contains? #[^ABC] #\A) ⇒ #f
(char-set-contains? #[^ABC] #\D) ⇒ #t

(char-set-contains? #[あ-お] #\う) ⇒ #t
(char-set-contains? #[あ-お] #\ぷ) ⇒ #f
Generic application: char-set char

文字集合オブジェクトは文字に適用されると、 (char-set-contains? char-set char) のように振る舞います。

(#[a-z] #\a) ⇒ #t
(#[a-z] #\A) ⇒ #f

(use gauche.collection)
(filter #[a-z] "CharSet") ⇒ (#\h #\a #\r #\e #\t)
Function: char-set char …

[SRFI-14] 文字char … からなる文字集合を作成して返します。

(char-set #\a #\b #\c)   ⇒ #[a-c]
(char-set #\あ #\い #\う) ⇒ #[あいう]
Function: char-set-size char-set

[SRFI-14] 文字セットに含まれる文字数を返します。

gosh> (char-set-size #[])
0
gosh> (char-set-size #[[:alnum:]])
62
Function: char-set-copy char-set

[SRFI-14] char-setのコピーを作って返します。

Function: char-set-complement char-set
Function: char-set-complement! char-set

[SRFI-14] char-setの補集合を返します。上の手続きは常に新たな集合を作って返しますが、 下の手続きは引数を変更して返す可能性があります。


Next: , Previous: , Up: 組み込みライブラリ   [Contents][Index]