文字列の処理に関する備忘録です。
・文字列に下線を引く
iOS6以降では、NSAttributedStringに NSUnderlineStyleAttributeName属性を指定することで下線を引くことができます。
指定できる下線の種類は以下の通りです。
NSUnderlineStyleNone : 下線なし
NSUnderlineStyleSingle : 一重線
NSUnderlineStyleThick : 太線 ※iOS7以降
NSUnderlineStyleDouble : 二重線 ※iOS7以降
NSUnderlinePatternSolid : 実線 ※iOS7以降
NSUnderlinePatternDot : 点線 ※iOS7以降
NSUnderlinePatternDash : 破線 ※iOS7以降
NSUnderlinePatternDashDot : 破線+点線 ※iOS7以降
NSUnderlinePatternDashDotDot : 破線+点線+点線 ※iOS7以降
NSUnderlineByWord : 単語の下に下線 ※iOS7以降
※NSUnderlineStyleXXXXX, NSUnderlinePatternXXXXX, NSUnderlineByWordは OR で同時指定できます。
1 2 3 |
NSAttributedString *undeline = [[NSAttributedString alloc] initWithString:@"下線" attributes:@{NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle | NSUnderlinePatternDot), NSUnderlineColorAttributeName:[UIColor redColor]}]; |
・部分文字列を取り出す
部分文字列を取り出すには、以下のメソッドを使用します。
・substringToIndex: (先頭から指定した位置までの文字列を取り出す)
※指定した位置の文字を含みません。
・substringFromIndex: (指定した位置から末尾までの文字列を取り出す)
※指定した位置の文字を含みます。
・substringWithRange: (指定した範囲の文字列を取り出す)
日付の文字列から、年・月・日を取り出す例です。
1 2 3 4 5 |
NSString *dateString = @"20140209"; NSString *year = [dateString substringToIndex:4]; NSRange rangeOfMonth = NSMakeRange(4, 2); NSString *month = [dateString substringWithRange:rangeOfMonth]; NSString *day = [dateString substringFromIndex:6]; |
結果は以下のようになります。
1 2 3 |
year : 2014 month : 02 day : 09 |
・文字列を任意の文字で分割する
csv形式の文字列など、ある文字で分割したい場合には componentsSeparatedByString:メソッドを使用します。
分割された文字列はNSArray型の配列に格納されて戻り値として返されます。
1 2 3 4 5 6 7 8 |
NSString *originalString = @"Strawberry,Peach,Apple"; // カンマ(,)を区切り文字として文字列を分割 NSArray *strings = [originalString componentsSeparatedByString:@","]; for ( NSString *substr in strings ) { NSLog(@"%@¥n", substr); } |
結果は以下のようになります。
1 2 3 |
Strawberry Peach Apple |
<おすすめの書籍>
文字列クラス(NSString)について詳しく説明されています。