文字列の操作を例のテキストでは全然やってなかった。面倒くさいので、コードそのまんま乗せてやんよ。Objective-Cのばやい、文字列の結合が意外と面倒くさい印象。
ここら辺も個人的に大事というかよく使うと思ってるんだけど、実はカレンダーとか日付処理の下準備のつもり。日付は文字列で出る癖に計算が必要だったりして、面倒だった覚えがある…VBSとかVBAでな!
メモリリリースしないのかよ! とかプロの方に怒られそうですが、autoreleasepool入れてると、逆に中の人に怒られるんだな。
//
// main.m
// sample103
//
// Created by macbook on 2013/05/12.
// Copyright (c) 2013年 macbook. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv)
{
@autoreleasepool {
//文字列の連結
NSString *strSample1 = [[NSString alloc] init];
NSString *strSample2 = [[NSString alloc] init];
strSample1 = @"うんこ10回";
NSLog(@"%@", strSample1);
strSample2 = @"漏らした";
NSLog(@"%@", strSample2);
//ObjectCでは簡単に文字列の連結ができない!
//NSLog(@"%@", strSample1 + strSample2); //行頭の//を外すとエラーになる
// strSample1とstrSample2を連結して、新たにpStr3のNSStringを生成する
NSString *strSample3 = [strSample1 stringByAppendingString:strSample2];
NSLog(@"連結:%@", strSample3);
//文字数をカウント
NSLog(@"文字数:%ld", [strSample1 length]);
//文字列が同じか比較
NSString *strSample4 = [[NSString alloc] init];
strSample4 = @"うんこ11回";
if([strSample1 isEqualToString:strSample4]){
NSLog(@"比較:同じ");
}
else {
NSLog(@"比較:違う");
}
//置換
NSString *strSample5 = [strSample1 stringByReplacingOccurrencesOfString: @"うんこ" withString: @"アレを"];
NSLog(@"置換:%@", strSample5);
}
return 0;
}
-------------実行結果-------------
2013-05-12 16:30:04.314 sample103[780:303] うんこ10回
2013-05-12 16:30:04.316 sample103[780:303] 漏らした
2013-05-12 16:30:04.317 sample103[780:303] 連結:うんこ10回漏らした
2013-05-12 16:30:04.317 sample103[780:303] 文字数:6
2013-05-12 16:30:04.318 sample103[780:303] 比較:違う
2013-05-12 16:30:04.318 sample103[780:303] 置換:アレを10回
----------------------------
//
// main.m
// sample102
//
// Created by macbook on 2013/05/12.
// Copyright (c) 2013年 macbook. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv)
{
@autoreleasepool {
//数字と文字列の変換
//時間をイメージして、数字を文字列に変換
NSString *strTwentyfour;
strTwentyfour = [NSString stringWithFormat:@"%d",24];
//この時点ではまだ計算できる
//strTwentyfour = [NSString stringWithFormat:@"%d",24 + 10];
NSLog(@"文字列化:%@", strTwentyfour);
//フォーマット指定子を変えてみる その1
NSLog(@"指定子変更1:%d", strTwentyfour); //意図しない数字(たぶん文字コード)が返ってくる
//計算してみる その1
//NSLog(@"計算1:%@", strTwentyfour - 10); //NSLog行頭の//を取るとエラーで実行できないはず
//今度は文字列を数字に変換
int i;
i = [strTwentyfour intValue];
NSLog(@"数字化:%d", i);
//フォーマット指定子を変えてみる その2
//NSLog(@"指定子変更2:%@", i); //NSLog行頭の//を取るとビルドに失敗するはず
//計算してみる その2
NSLog(@"計算2:%d", i - 10);
}
return 0;
}
-------------実行結果-------------
2013-05-12 16:28:15.942 sample102[763:303] 文字列化:24
2013-05-12 16:28:15.944 sample102[763:303] 指定子変更1:2052892272
2013-05-12 16:28:15.945 sample102[763:303] 数字化:24
2013-05-12 16:28:15.945 sample102[763:303] 計算2:14
----------------------------
参考リンク)
http://blog.justoneplanet.info/2011/01/30/objective-cの文字列/
http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%CA%B8%BB%FA%CE%F3%A4%CE%B4%C9%CD%FD(NSString)_mac