プロじゃないのでコピペでコーディング!

四半世紀に迫ろうとするベテラン・コピペ・プログラマーが送るコピペの元。 張って動けば良し!動かなければなんで?そんな私をサポートするブログです。 ま、動けば良いと本人が思ってるなら、これでも良いんじゃね?って思ったら生暖かく見守って頂き、こりゃ目に余る!って思ったら、優しく教えてやってください。

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な世界に行ってて帰ってきたときなどになんだっけ?ってなると見るくらいですかね。でも、私くらいのベテラン・コピペ・プログラマは、毎回参照するものです!