iOSアプリ開発
NSStringによる文字列操作
Objective-Cにおける文字列の操作をまとめます。
文字列検索
・rangeOfString
指定した文字列Aの中から、特定の文字列Bを探して、その位置を取得します。
他言語でいうところのindexOf系にあたり、Objective-Cにおいては単純な位置ではなく範囲で取得するようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// ドット「.」を検索する NSString* str = @"123.456"; NSRange range = [str rangeOfString:@"."]; if( range.location != NSNotFound ) { // 見つかった NSLog(@"position:%d", range.location); // 結果は "position3" と表示されます } else{ // 見つからない NSLog(@"Not found"); } |
部分文字列
・substringWithRange
・substringToIndex
指定した文字列の中から、範囲を指定して部分文字列を取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// ドット「.」を検索する NSString* str = @"123.456"; NSRange dotrange = [str rangeOfString:@"."]; if( dotrange.location != NSNotFound ){ // ドットが見つかった // ドットより前の文字列「123」を取得 NSString* left = [str substringWithRange:NSMakeRange(0, dotrange.location)]; // もしくは、 // NSString* left = [str substringToIndex:dotrange.location]; // ドットより後の文字列「456」を取得 NSString* left = [str substringFromIndex:dotrange.location+1]; } else{ // ドットが見つからない } |
文字列置換
・stringByReplacingOccurrencesOfString
指定した文字列の中にある、特定の文字列を全て別の文字列へ置換します。
1 2 |
NSString* str = @"aaa###bbb#"; NSString* new_str = [str stringByReplacingOccurrencesOfString:@"#" withString:@"$$"]; |
上記の例では、「#」の部分が全て「$$」へ変換されるため、結果としては
“aaa$$$$$$bbb$$”
という文字列が返却されることとなります。
トリム
・stringByTrimmingCharacterInSet
文字列の先頭と末尾にある空白、改行、タブを除去します。
1 2 |
NSString* str = @" abc "; str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; |
URLエンコードとデコード
・stringByAddingPercentEscapesUsingEncoding
・stringByReplacingPercentEscapesUsingEncodin
URLエンコードとデコードを行います。
1 2 3 4 5 6 7 8 9 |
NSString* param = @"ぱらめーた"; // URLエンコード NSString* encode_param = [param stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // URLデコード NSString* decode_param = [encode_param stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; |