Cocoa API解説(macOS/iOS)

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。

目次

NSCharacterSetクラス

Index>Foundation>NSCharacterSet

編集時点のバージョン OS X 10.8/iOS 6


apple(OS X)

apple(iOS)

解説

継承 NSObject
準拠 NSCoding
NSCopying
NSMutableCopying
NSObject (NSObject)
フレームワーク /System/Library/Frameworks/Foundation.framework
使用可能 Mac OS X v10.0以降
iOS 2.0以降
定義 NSCharacterSet.h

概要

本クラスについて

Unicodeに準拠した文字セットを提供するクラスです。NSStringオブジェクトやNSScannerオブジェクトで文字を検索する際に使用されます。

変更可能な文字セットはNSMutableCharacterSetクラスを使用します。
FoundationのCFCharacterSetRefとトールフリーブリッジです。

文字セットを作成

NSCharacterSetクラスにはUnicodeの分類に準拠したセットをつくるメソッドがあります。アルファベットと数字から構成される文字セットは(+ alphanumericCharacterSetメソッドで作成します。小数点を含む数字の文字列から構成される文字セットを作成するには(+ decimalDigitCharacterSetメソッドを使います。

小文字の文字セットは(+ lowercaseLetterCharacterSetメソッドで作成します。反対に大文字から構成される文字セットは(+ uppercaseLetterCharacterSet)メソッドで作成します。アルファベットと表意文字から構成される文字セットは(+ letterCharacterSetメソッドを使います。

コントロール文字の文字セットは(+ controlCharacterSetメソッドで、記号類の文字セットは(+ symbolCharacterSetメソッドで、小数点や句読点の文字セットは(+ punctuationCharacterSetメソッドで作成できます。
改行文字から構成される文字セットは(+ newlineCharacterSetメソッドで、ベース文字でない(他の文字と組み合わせて使う)文字セットは(+ nonBaseCharacterSetメソッドを使います。アクセントや濁点・半濁点付き文字のような組み合わされた文字列から構成される文字セットは(+ decomposableCharacterSet)メソッドを使います。

ギリシャ語などで使われる文字から構成される文字セット(Dž、Lj、Nj、Dzなど)を作成するには(+ capitalizedLetterCharacterSetメソッドを使います。
文字でないカテゴリに含まれる文字セットは(+ illegalCharacterSetメソッドで作成します。

空白文字のみの文字セットは(+ whitespaceCharacterSetメソッドで作成できますし、空白文字と改行文字も含む文字セットは(+ whitespaceAndNewlineCharacterSetメソッドで作成できます。

カスタムの文字セットを作成

オリジナルの文字セットを作成するには、指定した文字列を渡してその文字を含む文字セットを作るメソッド+ characterSetWithCharactersInString)や、Unidode番号の範囲を指定してその文字を含む文字セットを作るメソッド(+ characterSetWithRange:)などがあります。
指定した文字セットの全く逆の文字セットを作成するメソッド– invertedSet)もあります。

ビットマップ表現で文字セットを作成

文字セットはビットマップとして作成する事もできます。1コード分1ビットとなっていて通常65536文字分(8192byte )となっています。その範囲を超える文字が文字セットに含まれる場合はUTF32で表される1114112文字分(139280byte)まで拡張されます。
ビットマップであるNSDataから文字セットを作るメソッド+ characterSetWithBitmapRepresentation)やファイルから文字セットを作るメソッド+ characterSetWithContentsOfFile)があります。ファイルの内容は上記のビットマップファイルである必要があります。

文字セットをビットマップデータにして返します。文字セットをファイルに保存するためにビットマップデータにするメソッドは(– bitmapRepresentation)を使用します。

メンバーであるかのテスト

指定した文字が文字セットに含まれているかを返すメソッド– characterIsMember)があります。ここで扱えるのはunicharなので65535までしか扱えません。
UTF32が扱えるメソッド– longCharacterIsMember)もあります。

指定の文字セットはスーパーセットかを返すメソッド– isSupersetOfSet)があります。入力した文字が規定内の文字かどうかの判別に利用できます。

数字以外の文字が入力されていないかチェックする

#pragma mark NSCharacterSet isSupersetOfSet
-(void)method024
{
    NSCharacterSet *decimalSet = [NSCharacterSet decimalDigitCharacterSet];
    NSCharacterSet *checkSet = [NSCharacterSet characterSetWithCharactersInString:@"a12345"];
    BOOL valid = [decimalSet isSupersetOfSet:checkSet];    

    NSLog(@"%s is number? %@",__FUNCTION__,(valid)?@"YES":@"NO");
    //NSLog(@"%s %@",__FUNCTION__,mString);
    printf("unsigned short の最大値: %u\n", USHRT_MAX);
}

適合するプロトコル

NSCoding
encodeWithCoder:
initWithCoder:
NSCopying
copyWithZone:
NSMutableCopying
mutableCopyWithZone:

メソッド

標準文字セットを作成 OS X iOS
+ alphanumericCharacterSet 10.0 2.0 アルファベットの文字セット
+ capitalizedLetterCharacterSet 10.0 2.0 ギリシャ語などで使われる文字から構成される文字セット
+ controlCharacterSet 10.0 2.0 コントロール文字のセット
+ decimalDigitCharacterSet 10.0 2.0 数字の文字セット
+ decomposableCharacterSet 10.0 2.0 ユニコード1.1でアクセント記号のついた文字セット
+ illegalCharacterSet 10.0 2.0 例外の文字セット
+ letterCharacterSet 10.0 2.0 アルファベットの文字セット
+ lowercaseLetterCharacterSet 10.0 2.0 小文字のアルファベットの文字セット
+ newlineCharacterSet 2.0 改行文字の文字セット
+ nonBaseCharacterSet 10.0 2.0 ベース文字でない文字セット
+ punctuationCharacterSet 10.0 2.0 句読点の文字セット
+ symbolCharacterSet 10.0 2.0 シンボルキャラクタの文字セット
+ uppercaseLetterCharacterSet 10.0 2.0 大文字のアルファベットの文字セット
+ whitespaceAndNewlineCharacterSet 10.0 2.0 スペースとタブとCR
+ whitespaceCharacterSet 10.0 2.0 スペースとタブ
カスタム文字セットの作成
+ characterSetWithCharactersInString 10.0 2.0 指定した文字列から文字セットを作成
+ characterSetWithRange 10.0 2.0 指定した範囲のユニコード文字で文字セット
– invertedSet 10.0 2.0 レシーバに含まれていない文字だけを含んだセット
ビットマップ表現として文字セットの作成と管理
+ characterSetWithBitmapRepresentation 10.0 2.0 バイナリデータから文字セットを作成
+ characterSetWithContentsOfFile 10.0 2.0 ビットマップファイルから文字セットを作成
– bitmapRepresentation 10.0 2.0 文字セットのバイナリ形式データ
セットのメンバーであるかのテスト
– characterIsMember 10.0 2.0 指定した文字はセットのメンバーか
– hasMemberInPlane 10.0 2.0 指定した面はセットのメンバーを含むか
– isSupersetOfSet 10.0 2.0 指定した文字セットはレシーバの文字セットを含むか
– longCharacterIsMember 10.0 2.0 指定した文字は文字セットのメンバーか
廃止
longCharacterIsMember 2.0
isSupersetOfSet 2.0

サブクラス化の注意

引数

参照