2011年5月26日木曜日

よく使う文字列操作その2

良く使う文字列操作を書き終わった後に色々思いついちゃったので、続編を書きたいと思います。
そういえば文字列の長さを取得するメソッドとかも書いてなかったし。。。
まあ、だいたいどの言語でもlengthなんでobj-cのルールに乗っ取って書けば [str length]; になりますね。
ちなみに、前回で解説してきたNSMutableStringクラスはNSStringクラスのサブクラスになるので、NSStringクラスで使えるメソッドは使えます。


文字列の比較。
これは [str isEqualToString:str2]; です。
例えば、
NSString *str = [NSString stringWithString:@"山田”];
if ( [str isEqualToString:@"田中"]) {
NSLog(@"%@!この野郎!",str);
}

って感じで、strが田中だった場合は、何だかぶっそうな展開になります。
上の例では isEqualToString:メソッドの戻り値はNO(Boolean)で返ってくるので、特に修羅場にはなりません。


パスからディレクトリ名などを切り出す。

まず、バンドルのリソースファイルを取得します。

NSString *path;
path = [bundle pathForResource:@"background" ofType:"@png"];

NSLog(@"%@",path);

これの実行結果が" /user/document/background.png" だとします。

//ファイルの拡張子を取得
NSString *extension;
extension = [path pathExtension];

NSLog(@"%@",extension);
//実行結果:png

//ファイル名を取得
//例ではファイル名入れてpathForResourceしてるんですが、まあ練習ということで (^^;)

NSString *fileName;
fileNamee = [path lastPathComponent];
NSLog(@"%@",fileName);
//実行結果: background


//ファイルが存在するディレクトリを取得
NSString *directory;
directory = [path stringByDeletingLastPathComponent];
NSLog(@"%@",directory);

//実行結果: /user/document


そうそう、忘れていました!型変換でもつまずく型は結構いるんじゃないでしょうか。

他の言語なら、異なる型で宣言した変数に入りさえすれば。。。ふふふ、なんて事にもなりますが、obj-cではそうはいきません。
無理矢理キャストというのも無いみたいです。
NSString *str = [NSString stringWithString:@"123"];
NSInteger int = 35 + (NSInteger) str;
なんてやったら確実に怒られますw

[str intValue];
でinteger に型変換できます。ダブルの場合は
[str double];
です。


Obj-Cのメソッドの名前って覚えずらいですよね。
何かを見ながらコード書くより声に出してみた方が案外覚えられることに最近気づきました。僕だけかもしれませんが。

0 件のコメント:

コメントを投稿