Objective-Cにおける文字列処理

 Object-Cでは文字制御専用のクラスが用意されています。このクラスを用いることで、特定文字列の検索など様々な機能を簡単に行うことができます。ここでは、Objective-Cでの文字列処理について解説します。

文字クラスNSString

 まず、文字列をつくるにはNSStringというクラスを使用します。定義は以下のように行います。

NSString *名前=@”初期文字列”;

具体的には

NSString *test=@"ABCD";

とすればNSStringクラスtestが定義されます。そして、初期文字列にはABCDが入っています。

文字を連結する

 2つのNSStringの文字列を連結する方法を解説します。具体的には「ABC」と「DEF」という文字列を連結して、「ABCDEF」とする方法です。さて、文字を連結するにはstringByAppendingStringメソッドを使用します。使用例を以下にあげます。

NSString *a=@"ABC";
NSString *b=@"DEF";
NSString *c=[a stringByAppendingString:b];
NSLog(@"%@",c);

他にもフォーマットを利用する方法であるstringWithFormatメソッドもあります。

NSString *a=@"ABC";
NSString *b=@"DEF";
NSString *c=[NSString stringWithFormat:@"%@%@",a,b];
NSLog(@"%@",c);

とすれば

ABCDEF

と表示されます。

文字数を調べる

 NSStringの文字数を簡単に調べることができます。文字数を調べるメソッドがlengthメソッドです。

NSString *a=@"ABC";
NSInteger num=[a length];
NSLog(@"%d",num);

とすれば、

3

が表示されます。

文字列から文字を取り出す

 文字列から文字を取り出すにはsubstringFromIndex、substringToIndexを使用します。

    NSString *a=@"ABCDEF";
    NSString *b=[a substringFromIndex:3];
    NSString *c=[a substringToIndex:3];
    NSLog(@"%@,%@",b,c);

3以降の文字列DEF、3以内の文字列ABCが表示されます。

指定した範囲を取りたい場合はsubstringWithRangeメソッドを使用します。範囲に関してはNSRangeにデータを入れておいてわたします。

    NSString *a=@"ABCDEF";
    NSRange range;
    range.location=3;
    range.length=2;
    NSString *b=[a substringWithRange:range];
    NSLog(@"%@",b);

3文字以降から2文字なのでDEが表示されます。NSMakeRangeを使って以下のようにかくこともできます。

    NSString *a=@"ABCDEF";
    NSString *b=[a substringWithRange:NSMakeRange(3,2)];
    NSLog(@"%@",b);

文字列を検索する

 文字列を検索するにはrangeOfStringメソッドを使用します。引数に検索文字列を指定すれば、NSRangeで文字列の場所が帰ってきます。

    NSString *a=@"ABCDEF";
    NSRange range=[a rangeOfString:@"CD"];
    if(range.location!=NSNotFound){
        NSLog(@"%dから%d",range.location+1,range.location+range.length);
    }

「3から4」が出力されます。

文字列を比較する

isEqualToStringメソッドで文字列が同じかどうかをチェックできます。

    NSString *a=@"ABCDEF";
    NSString *b=@"ABCDEF";
    if([a isEqualToString:b]){
        NSLog(@"同じ");
    }else{
        NSLog(@"違う");
    }

「同じ」が出力されます。

文字列を置換する

stringByReplacingCharactersIsRangeメソッドで文字列を置換できます。

    NSString *a=@"ABCDEF";
    NSRange range=NSMakeRange(2,2);
    NSString *b=[a stringByReplacingCharactersInRange:range withString:@"!"];
    NSLog(@"%@",b);

「AB!EF」が表示されます。

文字列を数値へ変換する

文字列を数値へ変換するにはintValue,integerValue,floatValue,doubleValueなどを使用します。

    NSString *a=@"100";
    NSInteger num=[a integerValue];
    NSLog(@"%d",num);

 

著者:安井 真人(やすい まさと)