最終更新:2013-03-10 (日) 01:45:42 (3732d)
NSString
Top / NSString
C言語との違い
"hoge"
@"hoge"
Objective-C/リテラル
NSString *someString = @"Hello, World!";
は
NSString *someString = [NSString stringWithCString:"Hello, World!" encoding:NSUTF8StringEncoding];
と同等。
- which is assumed to be ‘\0’-terminated and UTF-8 encoded.
- There has been support for Unicode in constant @"" NSStrings since Xcode 3.0?
初期化
NSString* str; str = @"hoge";//NSStringで初期化 str = [NSString stringWithString:@"日本語"];//NSStringで初期化 str = [NSString stringWithCString:"hoge"];//C文字列で初期化 str = [NSString stringWithCString:"日本語" encoding:NSShiftJISStringEncoding];//文字コードを指定(ソースのエンコードと合わせる) str = [[NSString alloc]initWithCString:"Hello"];//allocしてからinit str = [[[NSString alloc]initWithString:@"日本語"] autorelease];//allocしてからinit str = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
可変文字列
NSStringはImmutable(変更不可)なので可変な文字列を扱いたい時はNSMutableStringを使う
NSMutableString* str = [NSMutableString stringWithString:@"hoge"];//可変文字列 string = [str string];//NSStringからNSMutableStringを生成 string = [NSMutableString string];//空文字列を生成
各種操作
[str length];//文字列の長さ strC = [strA stringByAppendingString:strB];//結合 //フォーマット出力 str = [NSString stringWithFormat:@"%a is hoge",stringA];//可変引数のときは,で区切る [str appendString:@"hoge"];//追加 [str insertString:@"ins" atIndex:2];//挿入 [str deleteCharactersInRange:NSMakeRange(0,1)];//削除 BOOL ret; ret = [strA isEqualToString:strB];//比較 ret = [str hasPrefix:@"Pre"];//前置詞 ret = [str hasSugfix:@"Suf"];//後置詞 NSRange range; range = [str rangeOfString:@"hoge"];//hogeがstrに含まれているか range.location stringA = [str substringToIndex:5];//先頭から5文字 stringA = [str substringFromIndex:5];//5文字目以降 stringA = [str substringWithRange:NSMakeRange(6,5)];//範囲指定
- ==はポインタの比較。文字列の比較はisEqualToString?
ファイル読み込み
NSString* text; NSString* path = @"/Users/Destination"; NSError* error; text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
ファイル書き込み
NSString* text = @"sample text"; NSString* path = @"/Users/Destination/text.txt"; NSError* error; BOOL result; //atomicallyは補助ファイルを使ってファイルの破損を防止するかどうか result = [text writeToFile:path atomically:yes encoding:NSUTF8StringEncoding error:&error];
stringWithFormat
- 引数はNSString
- 置換子
%@ NSString %d,%D,%i 整数 %u,%U 符号なしの整数 %x 符号なし整数を小文字の16進で表現 %X 符号なし整数を大文字の16進で表現 %f 小数 %c 文字 %s C言語の文字列 %% %
[NSString stringWithFormat:@"%@ %g", [font fontName], [font pointSize]]
NSRange
typedef struct _NSRange{ unsigned int location; unsigned int length; }NSRange; NSRange range = NSMakeRange(0,5); i=range.location;
関連
- NSStringEncoding
- NSCFString?
- NSPlaceholderString?
- NSPlaceholderMutableString?
- NSPathStore2?
- NSSimpleCString?
- NSConstantString?