Objecitve-C: 文字列操作
概要
文字通り、文字列(NSString)の操作です。
- 連結
- 分割
- 比較
- フォーマット代入
詳細
文字列連結
文字列連結には、stringByAppendingStringというメソッドが用意されています。Javaのように+演算子で連結できないのが残念ですね。 もちろん、この記事の最後に取り上げている文字列代入で対応してもOKですね。
//URL 作成 NSString *strUrl = @"http://local.test/v2.0/location/"; strUrl = [strUrl stringByAppendingString:self.InputTextField.text]; strUrl = [strUrl stringByAppendingString:@"/update"];
文字列分割
分割の意味合いには、いろんな意味合いがあると思いますが、まずは単純にカンマで分割する場合
NSString* string = @"Apple,Banana,Orange"; NSArray* values = [string componentsSeparatedByString:@","];
つづいて、2文字目から3文字を切り取るといった感じのやり方。
// 先頭から3文字取得 NSString *str1 = [@"こんにちは" substringToIndex:3]; if ( [str1 isEqualToString:@"こんに"] ) NSLog(@"true: 1"); // 3文字目から後ろを取得 NSString *str2 = [@"こんにちは" substringFromIndex:3]; if ( [str2 isEqualToString:@"ちは"] ) NSLog(@"true: 2"); // 2文字目から3文字分を取得 NSString *str3 = [@"こんにちは" substringWithRange:NSMakeRange(1,3)]; if ( [str3 isEqualToString:@"んにち"] ) NSLog(@"true: 3");
厳密には分割とは言わないですね。でもそんなこと言うとcomponentsSeparatedByString: だって新しい変数へ格納しているので。
文字列比較
比較についてはJavaと同様に=演算子ではなくメソッドを使います
NSString *currentStr = @"0"; if ([currentStr isEqualToString:@"0"]) currentStr = @"";
文字列代入
NSString *strJson = [NSString stringWithFormat:@" \ { \ \"appKey\" : \"%@\", \ \"lat\" : \"%@\", \ \"lng\" : \"%@\", \ \"accuracy\" : \"%@\", \ \"ts\" : \"%@\" \ }", getStoredAppKey, @"40", @"75", @"65.000000", @"2014-06-29T21:21:54+0900"];
さいごに
まぁ、しばらくAndroidな世界に行ってて帰ってきたときなどになんだっけ?ってなると見るくらいですかね。でも、私くらいのベテラン・コピペ・プログラマは、毎回参照するものです!