Objective-Cにおける文字列処理
2014年1月12日: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);
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー