2010年4月29日木曜日

NSString/NSMutableString (文字列クラス)概要1

Cocoaプログラミングでは、文字列操作に広くNSStringを使用しているようです。以下のような機能が実装されています。
  • 1行づつ取り出す
  • 文字列を比較する
  • 文字区切りで分割する
  • エンコードする
  • 検索する
また、内部にはUnicodeで格納され、1バイトコード、2バイトコードに関わらず文字単位での操作ができるため、ローカルなコードを意識しないですむそうです。
文字列定数も、「@”文字列”」とすることで、NSString形式とし、またインスタンスとしてメソッド呼び出しも可能だそうです。だたし、NSStringは文字を変更することはできず、変更する場合は、変更用メソッドが準備されたサブクラ ス”NSMutableString”を使うそうです。

--------オブジェクトの生成と解放-----------------
◆文字列(NSString)クラスの生成
   NSString *mojiretsu = [ [ NSString alloc] init ];

◆文字列 (NSString)クラスの解放
   [  mojiretsu release] ;

----------------文字列代入等------------------
◆文字列の代入
 mojiretsu = @"mojiretsu";

◆文字列の長さを取得(lengthメソッド)
 int len = [ mojiretsu length]; // 全角であっても1文字は1
   or
 NSUInteger len = [ @"ABC" length];
             ↑符号なしの整数値(符号ありの場合はNSInteger)

◆文字列をコピーする(stringWithStringメソッド)
NSMutableString* str = [ NSMutableString stringWithString: @"Hello" ];

◆書式により文字列を生成する(stringWithFormatメソッド)
     NSString* str= [NSString stringWithFormat: @"Time : %d min", min];
       //%d:整数、%f:実数、%4d:4桁整数、%04d:0でFill4桁整数 %@:文字列



----------------文字列比較------------------
◆文字列が同じか調べる((bool) stringByApendingStringメソッド)
NSString *hikaku = [[NSString alloc] init];
hikaku = @"ABCDEFG";

bool  dou = [ hikaku stringBYAppendingString:@"ABCDEFG"];

[hikaku release];

◆文字列を検索する(isEqualToStringメソッド)
  NSString* str2 =@"iPod touch"   
   if ( [str1 isEqualToString: str2] == YES ){
                //同じときの処理
     }

◆文字列を検索する(compaireメソッド)
  NSComarisonResult result = [str1 compare : str2 ];

    switch (result ) {
                  case NSOrderedAscending :
                             // str1が小さいときの処理
                          break;
                  case NSOrderedSame :
                             //同じときの処理
                         break;
                  case NSOrderdDesending:
                             // str1が大きいときの処理
                         break;
       }

----------------文字列取り出し/加工------------------
◆指定位置の文字列を取り出す(substringWithRangeメソッド:(NSRange)NSMakeRange(a,b)関数)
NSString *toridashimoto [[NSString alloc] init ];
toridashimoto = @"ABCDEFG";

NSString *horidasu = [ toridashimoto substringWithRange: NSMakeRange(0, 3)]

[toridashimoto release];
[toshitasu release];

◆指定位置の文字を取り出す(characterAtIndexメソッド)
unichar char = [ @"World" characterAtIndex : 2 ]; // 先頭が0

◆文字列を連結する((NSString)stringByAppendingStringメソッド)
NSString * head = [[NSString alloc ] init]; //前の文字
NSString * tail = [[NSString alloc ] init];   //後ろの文字
head = @"atama";
tail =@"oshiri";

NSString *karada = [head stringByAppendingString: tail];

[head release];
[tail release];
[karada release];

----------------その他------------------
  指定文字列で始まっているか -(BOOL) hasPrefix
  指定文字列で終わっているか -(BOOL) hasSuffix
  intへの変換    - (int) intValue
  NSIntegerへの変換   - (NSInteger) integerValue
  long longへの変換    - (long long) longLongValue
  floatへの変換           - (float) floatValue
  doubleへの変換       - (double) doubleValue

---------------例--------------------------
WebのURLデータもNSStringデータ型に組み込みます。
    // テキストフィールドから文字列を取得する。
    NSString* urlStr = [sender text];

その後、URLクラス、URLリスクエストと変換し、Web表示に依頼するようです。

(1)NSURLクラスのURLWithStringメソッド(クラスメソッド)で
      文字列からNSURLクラスのインスタンスを生成する。
    NSURL* url = [ NSURL URLWithString: urlStr ];

(2)NSURLRequestクラスのrequestWithURLメソッドで
     NSURLインスタンスからNSURLRequestのインスタンスを生成する。
    NSURLRequest* urlReq = [ NSURLRequest requestWithURL: url];

(3)NSURLRequestインスタンスをもとに
     ウェブビューにウェブページ読み込みを指示する。
    [ webView loadRequest: urlReq];

NSStringの応用についてはこちらまで。


0 件のコメント:

コメントを投稿