Objective-C 日記③ 字串

來源:互聯網
上載者:User
一、建立字串、類方法 

  公式建立NSString

  +(id) stringWithFormat:(NSString *) format,……;

eg:

  NSString *height;

  height=[NSString stringWithFormat:@"高度是: %d 長度: %d",10,20];

得到的字串:“高度是: 10 長度: 20”

 

注意:

  省略符號:表示可以接收多個參數,類似NSLog();

  加號:“+” Object-C運行時產生一個類的時候,會建立一個代表該類的類對象(類對象包含:指向超類的指標、類名、指向類方法列表的指標)

  如何在聲明方法時添加了加號,該方法就為類方法.這個方法屬於類對象(而不是類的執行個體對象),常用於建立新的執行個體。我們稱這種用來建立新對象的類方法為Factory 方法(stringWithFormat就是一個Factory 方法)

 

  如果該方法將會在某個對象執行個體中運行 方法用前置減號(-)來開始聲明

  如果建立一個執行個體對象或者訪問一些全域類資料,建議使用前置加號(+)將它聲明為類的方法

二、關於大小、字串比較

關於大小:

  NSString中包含一個方便的方法length,返回的是字串中的字元個數

  使用:unsigned int length = [height length];

  說明:NSString的length方法能夠準確無誤處理國際字串:比如中文以及使用Unicode國際字元標準的字串這點和C語言不同,C語言可能出現一個字元佔用的空間可能多於一個字元

 

字串比較:

  A:isEqualToString:用來比較接收方和當作參數傳遞來的字串。返回一個BOOL(YES or NO 不是true,false)類型來表示字串內容是否相同。格式:-(BOOL) isEqualToString:(NSString *) aString;

  eg:

NSString *str1 = @"hello pepe";    NSString *str2=[NSString stringWithFormat:@"hello %s","pepe"];    if([str1 isEqualToString:str2]){        NSLog(@"相同");    }    else{        NSLog(@"不同");    }

  結果當然是“相同”

  

     

  B:compare方法 聲明如下:-(NSComparisonResult) compare: (NSString *) string

   compare將接收對象和傳遞來的字串逐個字元的進行比較,返回一個NSComparisonResult(enum型資料)來顯示比較結果。

  eg:

    

BOOL result=[@"kaka" compare: @"pepe"];    NSLog(@"%s","kaka vs  pepe");    NSLog(@"%d",result);        result=[@"kaka" compare: @"kaka"];    NSLog(@"%s","kaka vs  kaka");    NSLog(@"%d",result);        result=[@"pepe" compare: @"kaka"];    NSLog(@"%s","pepe vs  kaka");    NSLog(@"%d",result);

  結果:

  

      

  注意:

    比較兩個字串是否相等時請用isEqualToString:而不能僅僅比較字串的指標值;

    eg:    

    if([str1 isEqualToString:str2]){   NSLog(@"相同"); }                             VS          if( str1==str2){  NSLog(@"相同");    }

    注意二者的區別:1、==運算子只判斷str1和str2的指標數值,而不是它們所指的對象

            2、如果想檢查兩個對象的標識此時可以使用==

            3、如果想查看等價性使用isEqualToString
             
       

    compare 比較字串返回的結果有下面幾種:

    

           

 

  C:不區分大小寫比較

    -(NSComparisonResult) compare: (NSString *) string options: (unsigned) mask;  [kəm'pærisən]  比較;對照;比喻;比較關係

    options參數是一個位元遮罩,可以使用位或運算子(|)來添加選項標記:

      NSCaseInsensitiveSearch:不區分大小寫比較;  [in'sensətiv] adj. 感覺遲鈍的,對…沒有感覺的

      NSLiteralSearch:進行完全比較,區分大小寫;    ['litərəl] adj. 文字的;逐字的;無誇張的

      NSNumericSearch:比較字串字元個數,而不是字元值;  [nju:'merik] 數;數字 adj. 數值的(等於mumerical);數位

 

    eg:

      

               

 

 

   D:字串中是否包含其他字串

    查詢頭尾是否包含某字串:hasPrefix 、hasSuffix

    -(BOOL) hasPrefix :(NSString * ) string;  檢查字串是否以某個字串開頭。         [,pri:'fiks, 'pri:fiks] 加首碼;將某事物加在前面

    -(BOOL) hasSuffix: (NSString *) string;   檢查字串是否以某個字串結尾。         ['sʌfiks, sə'fiks] vt. 添尾碼 n. [語]尾碼;下標

   eg:   

           

   查詢字串內是否包含某字串:rangeOfString 返回一個NSRange struct可以告訴你字串相匹配的部分在哪裡以及匹配的字元個數

    -(NSRange) rangeOfString:(NSString *) string;

  location用來存放欄位範圍的起始位置

  length是該範圍內所含元素的個數

  eg:    

          

 

  

三、可變性    

  NSString是不可變的字串,如果需要使用可變字串,Cocoa提供了一個NSString子類NSMutableString。

  格式

    -(id) stringWithCapacity:(unsigned) capacity;

  可通過appendString、appendFormat來添加新字串:-(void)appendString:(NSString *)string ; -(void) appendFormat:(NSString *)format……;

  說明:

    appendString接收參數string,然後將其複製到字串對象的結尾

    appendFormat與stringWithFormat類似,但它是將格式化的字串附加到接收字串的尾部,而不是建立新的字串對象;

  eg:   

         

  使用deleteCharactersInRange方法刪除字串中的字元:

    -(void)deleteCharactersInRange:(NSRange) range;

  因NSMutableString是NSString的子類所以NSString的方法NSMutableString都可以使用

  eg:  

         

 

 

 

 

 

 

 

 

 

 

 

 

 

作者:PEPE
出處:http://pepe.cnblogs.com/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.