2009年8月20日木曜日

文字列操作について

(1)文字列を扱うクラスには以下の2つがあります。
  • NSString ・・・インスタンス生成後は変更不可能
  • NSMutableString ・・・インスタンス生成後も変更可能 NSStringのサブクラス
(2)NSString型の文字列定数

@"文字列"


(3)文字列の文字数を取得する


NSUInteger len = [ @"xxxxxxxx" length ];


(4)文字列の生成・コピー

NSString* str = [ NSString stringWithString: @"xxxxxxx" ];
NSString* str = @"xxxxxxx";

NSMutableString* str = [ NSMutableString stringWithString: @"xxxxxxx" ];


(5)書式指定して文字列生成

int min = 33;
NSString* str = [ NSString stringWithFormat: @"%d min" :min ]; -> str = "33 years old"
NSString* str1 = [ NSString stringWithFormat: @"%4d" :min ]; -> str = "33"
NSString* str2 = [ NSString stringWithFormat: @"%04d" :min ]; -> str = "0033"


(6)オブジェクトを埋め込む
NSString* name = @"xxxx";
NSString* str = [NSString stringWithFormat: @"name = %d" , name ]; -> "name = xxxx"
オブジェクトのdescriptionメソッドが呼び出され、文字列に結合されます。

(7)文字列の連結

NSString* str1 = @"My name is ";
NSString* str2 = [ str1 stringByAppendingString : @"xxxx" ];
-> str2 = "My name is xxxx"

NSMutableString* str = @"My name is ";
[ str appendString : @"xxxx" ];
-> str = "My name is xxxx"


(8)文字列の切り出し

unichar chr = [ @"abced" characterAtIndex : 3];
-> chr = "e"

NSRange range = { 1 , 3 }
NSString* str = [ @"abcde" subStringWithRange : range ];
-> str = "bcd"


(9)文字列の比較

NSString* str1 = @"aaa";
NSString* str2 = @"bbb";
if ( [str1 isEqualToString : str2 ] == YES ) {
// 一致した場合の処理を記述
}


(10)文字列の部分比較

NSString* str = @"abcde";
BOOL prefix = [ str hasPrefix : @"abc" ]; -> YES 先頭の文字列評価
BOOL suffix = [ str hasSuffix : @"cde" ]; -> YES 末尾の文字列評価