Objective-C 日记③ 字符串
一、創(chuàng)建字符串、類方法
公式創(chuàng)建NSString
+(id) stringWithFormat:(NSString *) format,……;
eg:
NSString *height;
height=[NSString stringWithFormat:@"高度是: %d 長度: %d",10,20];
得到的字符串:“高度是: 10 長度: 20”
?
注意:
省略號:表示可以接收多個參數(shù),類似NSLog();
加號:“+” Object-C運(yùn)行時生成一個類的時候,會創(chuàng)建一個代表該類的類對象(類對象包含:指向超類的指針、類名、指向類方法列表的指針)
如何在聲明方法時添加了加號,該方法就為類方法.這個方法屬于類對象(而不是類的實(shí)例對象),常用于創(chuàng)建新的實(shí)例。我們稱這種用來創(chuàng)建新對象的類方法為工廠方法(stringWithFormat就是一個工廠方法)
?
如果該方法將會在某個對象實(shí)例中運(yùn)行 方法用前導(dǎo)減號(-)來開始聲明
如果創(chuàng)建一個實(shí)例對象或者訪問一些全局類數(shù)據(jù),建議使用前導(dǎo)加號(+)將它聲明為類的方法
二、關(guān)于大小、字符串比較
關(guān)于大小:
NSString中包含一個方便的方法length,返回的是字符串中的字符個數(shù)
使用:unsigned int length = [height length];
說明:NSString的length方法能夠準(zhǔn)確無誤處理國際字符串:比如中文以及使用Unicode國際字符標(biāo)準(zhǔn)的字符串這點(diǎn)和C語言不同,C語言可能出現(xiàn)一個字符占用的空間可能多于一個字符
?
字符串比較:
A:isEqualToString:用來比較接收方和當(dāng)作參數(shù)傳遞來的字符串。返回一個BOOL(YES or NO 不是true,false)類型來表示字符串內(nèi)容是否相同。格式:-(BOOL) isEqualToString:(NSString *) aString;
eg:
NSString *str1 = @"hello pepe";NSString *str2=[NSString stringWithFormat:@"hello %s","pepe"];if([str1 isEqualToString:str2]){NSLog(@"相同");}else{NSLog(@"不同");}結(jié)果當(dāng)然是“相同”
?????
B:compare方法 聲明如下:-(NSComparisonResult) compare: (NSString *) string
?compare將接收對象和傳遞來的字符串逐個字符的進(jìn)行比較,返回一個NSComparisonResult(enum型數(shù)據(jù))來顯示比較結(jié)果。
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);
結(jié)果:
??????
注意:
比較兩個字符串是否相等時請用isEqualToString:而不能僅僅比較字符串的指針值;
eg: ? ?
if([str1 isEqualToString:str2]){???NSLog(@"相同"); }???????????????????????????? VS????? ? ? if( str1==str2){? NSLog(@"相同");??? }
注意二者的區(qū)別:1、==運(yùn)算符只判斷str1和str2的指針數(shù)值,而不是它們所指的對象
2、如果想檢查兩個對象的標(biāo)識此時可以使用==
3、如果想查看等價性使用isEqualToString
?? ??? ???
?? ? ?
compare 比較字符串返回的結(jié)果有下面幾種:
? ? ? ? ? ?
?
C:不區(qū)分大小寫比較
-(NSComparisonResult) compare: (NSString *) string options: (unsigned) mask;??[k?m'p?ris?n]??比較;對照;比喻;比較關(guān)系
options參數(shù)是一個位掩碼,可以使用位或運(yùn)算符(|)來添加選項(xiàng)標(biāo)記:
NSCaseInsensitiveSearch:不區(qū)分大小寫比較; ?[in'sens?tiv]?adj. 感覺遲鈍的,對…沒有感覺的
NSLiteralSearch:進(jìn)行完全比較,區(qū)分大小寫; ? ?['lit?r?l]?adj. 文字的;逐字的;無夸張的
NSNumericSearch:比較字符串字符個數(shù),而不是字符值;??[nju:'merik]?數(shù);數(shù)字?adj. 數(shù)值的(等于mumerical);數(shù)字的
?
eg:
? ? ? ? ? ? ? ?
?
?
? D:字符串中是否包含其他字符串
查詢頭尾是否包含某字符串:hasPrefix 、hasSuffix
-(BOOL) hasPrefix :(NSString * ) string; ?檢查字符串是否以某個字符串開頭。 ? ? ? ??[,pri:'fiks, 'pri:fiks]?加前綴;將某事物加在前面
-(BOOL) hasSuffix: (NSString *) string; ? 檢查字符串是否以某個字符串結(jié)尾。 ? ? ? ? ['s?fiks, s?'fiks]?vt. 添后綴?n. [語]后綴;下標(biāo)
? eg:
? ? ? ? ? ?
? 查詢字符串內(nèi)是否包含某字符串:rangeOfString 返回一個NSRange struct可以告訴你字符串相匹配的部分在哪里以及匹配的字符個數(shù)
-(NSRange) rangeOfString:(NSString *) string;
location用來存放字段范圍的起始位置
length是該范圍內(nèi)所含元素的個數(shù)
eg:
? ? ? ? ??
?
三、可變性 ?
NSString是不可變的字符串,如果需要使用可變字符串,Cocoa提供了一個NSString子類NSMutableString。
格式
-(id) stringWithCapacity:(unsigned) capacity;
可通過appendString、appendFormat來添加新字符串:-(void)appendString:(NSString *)string ; -(void) appendFormat:(NSString *)format……;
說明:
appendString接收參數(shù)string,然后將其復(fù)制到字符串對象的結(jié)尾
appendFormat與stringWithFormat類似,但它是將格式化的字符串附加到接收字符串的尾部,而不是創(chuàng)建新的字符串對象;
eg:
? ? ? ? ?
使用deleteCharactersInRange方法刪除字符串中的字符:
-(void)deleteCharactersInRange:(NSRange) range;
因NSMutableString是NSString的子類所以NSString的方法NSMutableString都可以使用
eg:
? ? ? ? ?
?
?
?
?
?
?
?
?
?
?
?
?
?
作者:PEPE
出處:http://pepe.cnblogs.com/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
總結(jié)
以上是生活随笔為你收集整理的Objective-C 日记③ 字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ANOI 2009 【同类分布】
- 下一篇: 12.10课堂学习----实例化、构造方