一、建立字串、類方法
公式建立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/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。