■定義
以下のようにして文字列を定義する。
NSString *str = [[NSString alloc] initWithString:@"hogehoge"];
但し、この場合は使い終わったらreleaseしなければならないので、以下のようにstringWithStringメソッドを用いるとautoreleaseされる。
NSString *str = [NSString stringWithString:@"hogehoge"];
以下のようにして、文字コードを指定することができる。
NSString *str = [NSString initWithCString:"にほんご" encoding:NSUTF8StringEncoding];
autoreleaseについて
autoreleaseはNSAutoreleasePoolによって実現されているが、テンプレートからプロジェクトを作った場合は、既にmain.mに以下のようなコードが記述されている。
int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }
■各種操作
結合
文字列を結合する場合、以下のようにstringByAppendingStringメソッドを使用する。
NSString *hoge = @"hogehoge"; NSString *fuga = @"fugafuga"; NSLog(@"%@", [hoge stringByAppendingString: fuga]);// hogehogefugafuga
以下のように、日本語でも使用することができる。
NSString *hoge = @"これは"; NSString *fuga = @"日本語です"; NSLog(@"%@", [hoge stringByAppendingString: fuga]);// これは日本語です
長さ
文字列の長さを取得する場合、以下のようにlengthメソッドを使用する。
NSString *hoge = @"hogehoge"; NSLog(@"%d", [hoge length]);// 8
目を疑ってしまったが、以下のようなマルチバイトの文字列でも正しく文字数をカウントする。
NSString *hoge = @"これは日本語です"; NSLog(@"%d", [hoge length]);// 8
置換
文字列を置換する場合、以下のようにstringByReplacingOccurrencesOfStringメソッドを使用する。
NSString *hoge = @"hogehoge"; NSLog([hoge stringByReplacingOccurrencesOfString: @"hoge" withString: @"piyo"]);// piyopiyo
以下のように、日本語でも使用することができる。
NSString *hoge = @"これは日本語です"; NSLog([hoge stringByReplacingOccurrencesOfString: @"です" withString: @"ですか"]);// これは日本語ですか
抽出
文字列を抽出する場合、以下のようにsubstringWithRangeメソッドを使用する。他にもsubstring系メソッドはある。
NSString *hoge = @"hogehoge"; NSLog(@"%@", [hoge substringWithRange: NSMakeRange(2, 4)]);// geho
以下のように、日本語でも使用することができる。
NSString *hoge = @"これは日本語です"; NSLog(@"%@", [hoge substringWithRange: NSMakeRange(2, 4)]);// は日本語
分割
文字列を分割する場合、以下のようにcomponentsSeparatedByStringメソッドを使用する。
NSString *hoge = @"hogehoge"; NSLog(@"%@", [[hoge componentsSeparatedByString: @"e"] description]);// hog, hog, ""
以下のように、日本語でも使用することができる。
NSString *hoge = @"これは日本語です"; NSLog(@"%@", [[hoge componentsSeparatedByString: @"語"] description]);// "\U3053\U308c\U306f\U65e5\U672c","\U3067\U3059"
比較
文字列を比較する場合、以下のようにisEqualToStringメソッドを使用する。
NSString *hoge = @"hogehoge"; NSString *fuga = @"fugafuga"; if([hoge isEqualToString:fuga]){ NSLog(@"%@", @"equal"); } else { NSLog(@"%@", @"not Equal"); } // not Equal
以下のように、日本語でも使用することができる。
NSString *hoge = @"これは日本語です"; NSString *fuga = @"これは日本語ですß"; if([hoge isEqualToString:fuga]){ NSLog(@"%@", @"equal"); } else { NSLog(@"%@", @"not Equal"); } // equal