objective-c之NSString

來源:互聯網
上載者:User
文章目錄
  •  建立字串
  • 類方法
  • 擷取大小
  • 比較的策略
  •  不區分大小寫比較
  • 如何判斷字串裡面還包含其他字串

NSString在前面已經說過是,是Cocoa中用來處理字串的類。下面就是NSString的一些常用方法及操作:

 建立字串

NSString的stringWithFormat:方法就是通過格式字串和參數建立NSString的:

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

你可以按下面的使用,如:

NSString *height;

Height = [NSString stringWithFormat:@"your heightis %d feet", 5];

那得到的字串是“yourheight is 5 feet”

類方法

前面看到了stringWithFormat的定義,不知注意到了沒有,和我們以前聲明一個方法有兩個很大的區別:

第一個是參數用“,...”來結尾,這是表示它可以接多個參數;

第二個是方法前面不是“-”,而是“+”,這是什麼意思呢?這是表示它是一個類方法,這個方法屬於類對象(而不是執行個體對象)並且通常用於建立新的執行個體。這種用來建立新對象的類方法稱為Factory 方法

 

擷取大小

NSString中的另一個執行個體方法是length,它返回的是字串中的字元個數。

- (unsigned int) length;

可以這樣使用它:

unsigned int len = [height length];

 

比較的策略

isEqualToString:可以用來比較接收方和當作參數傳遞來的符號。它返回一個BOOL型資料來表示兩個字串的內容是否相同。聲明如下:

- (BOOL) isEqualToString: (NSString *) aString;

舉例說明:

NSString *string1 = @"hello 5";

NSString *string2;

string2 = [NSString stringWithFormat: @"hello%d",5];

if([string1 isEqualToString:string2])

{

    NSLog(@"They are same!");

}

 

compare:用來比較兩個字串,將接收對象和傳遞來的字串進行比較,返回一個NSComparisonResult(就是一個enum型資料)來顯示比較結果,聲明如下:

-(NSComparisonResult) compare:(NSString *) string;

傳回值的定義如下:

typedef enum _NSComparisonResult{
     NSOrderedAscending = -1,    // <升序
     NSOrderedSame,              // =等於
     NSOrderedDescending  // >降序
} NSComparisonResult;

備忘:如果比較兩個字串是否相等時,應該用isEqualToString,而不能僅僅只是比較字串的指標值。另外compare判斷的話只會根據第一個字元來進行判斷,比如100與90,那就是升序,abcdef與dc比較,也是升序。

 

 不區分大小寫比較

compare:也可以進行區分大小寫比較,它還有一種重載,多了一個option參數,用來給我們更多的選擇與操作,方法具體定義如下:

-(NSComparisonResult) compare:(NSString *) string

                      option:(unsigned)mask;

 

options參數是一個位元遮罩,你可以使用位或運算子來添加選項標記,常用的選項如下:

NSCaseInsensitiveSearch:不區分大小寫字元。

NSLiteralSearch:進行完全比較,區分大小寫。

NSNumericSearch:比較字元呂的字元個數,而不是字元值。

例如:如果要進行字串的比較,要忽略大小寫但按字元個數的多少正確排序,那麼應該如下使用:

if([thing1compare:thing2

option: NSCaseInsensitiveSearch

| NSNumericSearch]

== NSOrderedSame)

{

    NSLog(@“they match!”);

}

 

如何判斷字串裡面還包含其他字串

比如你要判斷一個檔案名稱裡面是否包含“.avi”,這樣可以判斷是否可以用播放器開啟它,再或者你想檢查一個檔案的開頭是否包含了一個字元“my”,來判斷它是否是你的文檔。那麼下面有兩個方法來協助進行判斷:一個是檢查字串是否以另一個字串進行開頭,另一個是檢查字串是否以另一個字串進行結尾:

-(BOOL) hasPrefix:(NSString *) aString;

-(BOOL) hasSuffix:(NSString *) aString;

那麼如何判斷字串中是否包含另一個字串呢?還有另一個函數:

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

返回的NSRange結構體,range.start為出現的第幾個位置,range.length為要比較的字串的長度,如果沒有找到,則range.start則等於NSNotFound。

可變的字串

NSString是不可變的,建立了之後就無法改變它,我們只能對它進行各種不影響其內容的操作,比如刪除字元或者添加字元來改變它。所以Cocoa提供了一個NSString的子類,叫做NSMutableString,如果定義的字串後面會發生改變,則使用這個子類。

使用類方法stringWithCapacity:來建立一個新的NSMutableString,聲明如下:

- (id) stringWithCapacity: (unsigned) capacity:

備忘:capacity只是一個最優的容量,定義了這個大小後,並不是說僅限於這麼大。

NSMutableString *string;

string = [NSMutableString stringWithCapacity: 42];

NSMutableString常用的操作有如下:

appendString:appendFormat:來附加新字串,定義如下:

 - (void)appendString: (Nsstring *) aString;

 -  (void) appendFormat: (NSString *) Format;

appendString 接受參數aString,然後將其複製到接受對象的末尾。

appendFormat類似,他將格式化的字串附加在接受對象的末尾,而不是建立新的對象。

deleteCharacterInRange:用來刪除字串中的字元,定義如下:

-(void)deleteCharactersInRange: (NSRange) range;

通常將deleteCharactersInRange:和rangeOfString:連在一起使用,NSMutableString可以使用NSString的全部功能,包括rangeOfString:、字串比較和其他任何功能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.