libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

テキストを扱うNSString/NSMutableString (4/6)

作成:2011-02-11 17:58
更新:2011-02-17 11:37

■テキストの分割・検索置換

この他の機能で、比較的重要な「覚えておくと便利だ!」と思えるものをいくつかピックアップして紹介しておきましょう。まずは「テキストの分割」からです。

テキストを特定のテキスト部分で分割して取り出す、ということもできます。これは引数にテキストを指定すると、そのテキスト部分を区切り文字としてテキストを分割し、「NSArray」というクラスのインスタンスにまとめて返します。
NSArray *変数 = [《NSString*》
        componentsSeparatedByString:《NSString*》];
このNSArrayは、オブジェクトを多数保管する「配列のクラス」です。NSArrayについては、また改めて説明をしますので、ここでは「こうやってテキストを幾つも分けることが出来る」ということだけわかればいいでしょう。

この「テキストの分割」は、引数で指定したテキストが「区切り文字」になります。つまり、そのテキストは、そこでテキストを分けるという目印として扱われるわけです。ということは、そのテキストそのものは、分割されたテキストからは消えてしまいます。
NSString* str = @"Welcome to Objective-C.";
NSArray* re = [str componentsSeparatedByString:@"Object"];
NSLog(@"%@",re);
これは、「Welcome to Objective-C.」というテキストを「Object」で分割する例です。これにより「Welcome to 」「ive-C.」という2つのテキストを収めたNSArrayが作成されます。Objectというテキストそのものは区切り文字として消えていることがわかるでしょう。

■テキストの検索
テキストの中から、検索文字がある場所を調べるためのメソッドというのも用意されています。これは以下のようなものです。
NSRange 変数 = [《NSString*》 rangeOfString:《NSString*》];
ここでは、引数に検索テキストを指定して呼び出し、返値に「NSRange」が得られます。NSRangeというのは、先にテキストの一定範囲を指定するのに使いましたね。つまり、このNSRangeにより、「テキストの何文字目から何文字の間に検索文字がある」ということがわかるわけです。
NSString* str = @"Welcome to Objective-C.";
NSRange r = [str rangeOfString:@"Object"];
NSLog(@"%i - %i.",r.location,r.length);

■テキストの置換
検索があれば、もちろん置換も用意されています。これには、主に2つのやり方があります。1つは、いわゆる一般的な置換で、検索テキストを探し出し、置換テキストに置き換えます。
NSString *変数 = [《NSString*》 stringByReplacingOccurrencesOfString:
        《NSString*》 withString:《NSString*》];
ちょっと長い関数名ですね。これは、最初の引数のテキストを2つ目の引数のテキストに置換したものを返します。例えば、下の例なら、「Welcome to AppleScript.」というテキストが出力されます。
NSString* str = @"Welcome to Objective-C.";
NSString* re = [str stringByReplacingOccurrencesOfString:
        @"Objective-C" withString:@"AppleScript"];
NSLog(@"%@",re);

■指定範囲のテキストの置き換え
もう1つは、テキストの範囲を指定して、その部分のテキストを置換テキストと入れ替える、というものです。これは以下のようなものになります。
NSString *変数 = [《NSString*》 stringByReplacingCharactersInRange:
        《NSRange》 withString:《NSString*》];
1つ目の引数には、範囲を指定するための「NSRange」が渡されます。これは、前に登場した「NSMakeRange」という関数を使って、位置と長さを指定して作成をすればいいでしょう。そして2つ目の引数には置換するテキストを用意します。
NSString* str = @"Welcome to Objective-C.";
NSRange r = NSMakeRange(5, 7);
NSString* re = [str stringByReplacingCharactersInRange:r withString:@"*******"];
NSLog(@"%@",re);これを実行すると、「Welco*******bjective-C.」というテキストが出力されます。ここでは置換テキストと文字数を合わせていますが、別にそうしないといけないわけではなく、どんなテキストとも置換できます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※サンプル(1)
NSString* str = @"Welcome to Objective-C.";
NSArray* re = [str componentsSeparatedByString:@"Object"];
NSLog(@"%@",re);

※サンプル(2)
NSString* str = @"Welcome to Objective-C.";
NSRange r = [str rangeOfString:@"Object"];
NSLog(@"%i - %i.",r.location,r.length);

※サンプル(3)
NSString* str = @"Welcome to Objective-C.";
NSString* re = [str stringByReplacingOccurrencesOfString:
		@"Objective-C" withString:@"AppleScript"];
NSLog(@"%@",re);

※サンプル(4)
NSString* str = @"Welcome to Objective-C.";
NSRange r = NSMakeRange(5, 7);
NSString* re = [str stringByReplacingCharactersInRange:r 
		withString:@"*******"];
NSLog(@"%@",re);
※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る