天天看點

NSString的幾種常用方法—韓俊強博…

1.建立nsstring字元串

nsstring 與 char* 最大的差別就是 nsstring是一個objective對象,而char* 是一個位元組數組。@+" 字元串 " 這個符号為objective-c nsstring 字元串常量的标準用法,char* 建立的時候 無需添加@

- (void)viewdidload  

    [super viewdidload];  

    //經典的字元串指派  

    nsstring *str0 = @"my name is justcoding !";  

    //字元串格式化合并分别包括  

    //nsstring*類型 int類型 char*類型   

    nsstring *str1 = [nsstring stringwithformat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];  

    //字元串指派 參數中隻可以寫一個字元串 和第一種很像  

    nsstring *str2 = [nsstring stringwithstring:@"我是字元串"];  

    //字元串轉換為utf-8格式 參數為char*類型  

    nsstring *str3 = [nsstring stringwithutf8string:"字元串轉換utf-8格式"];  

    //字元串合并  

    int i  = 100;  

    char*c = "xuanyusong";  

    nsstring *temp = @"我是臨時字元串";  

    //在字元串temp的基礎繼續添加 int i 與 char* c 組成一個新的字元串  

    nsstring *str4 = [temp stringbyappendingformat:@"整型: %d 字元型 :%s",i,c];  

    //在字元串temp的基礎繼續添加temp 并組成一個新的字元串  

    nsstring *str5 = [temp stringbyappendingstring:temp];   

    //字元串輸出  

    nslog(@"str0 = %@", str0);  

    nslog(@"str1 = %@", str1);  

    nslog(@"str2 = %@", str2);  

    nslog(@"str3 = %@", str3);  

    nslog(@"str4 = %@", str4);  

    nslog(@"str5 = %@", str5);  

2.字元串的周遊 

每一個字元串其實是由若幹個char字元組成,字元串的周遊實際上就是将字元串中的每一個字元提取出來。

    nsstring *str = @"yusongmomo";  

    //字元串的長度  

    int count = [str length];  

    nslog(@"字元串的長度是%d",count);  

    //周遊字元串中的每一個字元  

    for(int i =0; i < count; i++)  

        char c = [str characteratindex:i];  

        nslog(@"字元串第 %d 位為 %c",i,c);  

3.字元串的比較 

isequaltostring 比較字元串是否完全相等,大小寫不一樣也無法完全比對。

hasprefixe 比對字元串頭

hasuffix     比對字元串的尾巴

    nsstring *str0 = @"justcoding";  

    nsstring *str1 = @"justcoding";  

    //字元串完全相等比較  

    if([str0 isequaltostring:str1])  

        nslog(@"字元串完全相等");  

    //字元串以開頭比較  

    if([str0 hasprefix:@"just"])  

        nslog(@"字元串str0以just開頭");  

    //字元串以結尾比較  

    if([str1 hassuffix:@"coding"])  

        nslog(@"str1字元串以coding結尾");  

//isequaltostring方法      

nsstring *astring01 = @"this is a string!";  

nsstring *astring02 = @"this is a string!";  

bool result = [astring01 isequaltostring:astring02];  

nslog(@"result:%d",result);  

//compare方法(comparer傳回的三種值)      

nsstring *astring02 = @"this is a string!";      

bool result = [astring01 compare:astring02] = = nsorderedsame;      

nslog(@"result:%d",result);      

//nsorderedsame 判斷兩者内容是否相同  

bool result = [astring01 compare:astring02] = = nsorderedascending;      

//nsorderedascending 判斷兩對象值的大小(按字母順序進行比較,astring02大于astring01為真)  

bool result = [astring01 compare:astring02] = = nsordereddescending;      

//nsordereddescending 判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為真)  

//不考慮大 小寫比較字元串1  

bool result = [astring01 caseinsensitivecompare:astring02] = = nsorderedsame;      

//nsordereddescending判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為 真)  

//不考慮大小寫比較字元串2  

bool result = [astring01 compare:astring02 options:nscaseinsensitivesearch | nsnumericsearch] = = nsorderedsame;      

//nscaseinsensitivesearch:不區分大小寫比較 nsliteralsearch:進行完全比較,區分大小寫 nsnumericsearch:比較字元串的字元個數,而不是字元值。  

判斷的方法可以利用 nsstring 類别中 caseinsensitivecompare: 所回傳 -1、0 或是 1 的數值,判定兩個字串之間得排序關系,其程式瑪如下。

nsstring *string = @"0";  

 nscomparisonresult result = [string caseinsensitivecompare:@"a"];  

 switch (result) {  

 case nsorderedascending:  

 nslog(@"升幂");  

 break;  

 case nsorderedsame:  

 nslog(@"忽略大小寫相同的字串");  

 case nsordereddescending:  

 nslog(@"降幂");  

 default:  

 nslog(@"無法判定");  

4. 檔案字元串操作(讀寫)

//從檔案讀取字元串:initwithcontentsoffile方法  

nsstring *path = @"astring.text";  

nsstring *astring = [[nsstring alloc] initwithcontentsoffile:path];  

nslog(@"astring:%@",astring);  

[astring release]; //astring=nil;  

//寫字元串到檔案:writetofile方法  

nsstring *astring = [[nsstring alloc] initwithstring:@"this is a string!"];  

nsstring *path = @"astring.text";      

[astring writetofile: path atomically: yes];  

[astring release];  //astring=nil;  

//擴充路徑  

nsstring *path = @"~/nsdata.txt";  

nsstring *absolutepath = [path stringbyexpandingtildeinpath];  

nslog(@"absolutepath:%@",absolutepath);  

nslog(@"path:%@",[absolutepath stringbyabbreviatingwithtildeinpath]);  

//檔案擴充名  

nslog(@"extension:%@",[path pathextension]);  

5. 字元串的截取和大小寫

//改變字元串的大小寫  

nsstring *string1 = @"a string";  

nsstring *string2 = @"string";  

nslog(@"string1:%@",[string1 uppercasestring]);//大寫  

nslog(@"string2:%@",[string2 lowercasestring]);//小寫  

nslog(@"string2:%@",[string2 capitalizedstring]);//首字母大小  

java代碼  

    nsstring *str0 = @"中文my name is xuanyusong";  

    //截取字元串起始點到index為4之間的内容  

    nsstring * to = [str0 substringtoindex:4];  

    nslog(@"to = %@",to);  

    //截取字元index為2 到結尾之間的内容  

    nsstring * from = [str0 substringfromindex:2];  

    nslog(@"from = %@",from);  

    //設定截取字元串的範圍   

    //從第二位開始,長度為十  

    nsrange rang = nsmakerange(2, 10);  

    nsstring * strrang = [str0 substringwithrange:rang];  

    nslog(@"rang = %@",strrang);  

    //設定字元串首字母大寫  

    nslog(@"str0首字母大寫:%@",[str0 capitalizedstring]);  

    //設定字元串全部内容為大寫  

    nslog(@"str0大寫:%@",[str0 uppercasestring]);  

    //設定字元全部内容為小寫  

    nslog(@"str0小寫:%@",[str0 lowercasestring]);  

6.搜尋字元串與替換字元串

    nsstring *temp = @"is";  

    nsrange rang = [str0 rangeofstring:temp];  

    nslog(@"搜尋的字元串在str0中起始點的index 為 %d", rang.location);  

    nslog(@"搜尋的字元串在str0中結束點的index 為 %d", rang.location + rang.length);  

    //将搜尋中的字元串替換成為一個新的字元串  

    nsstring *str = [str0 stringbyreplacingcharactersinrange:rang withstring:@"哇咔咔卡卡咔"];   

    nslog(@"替換後字元串為%@", str);  

    //将字元串中" " 全部替換成 *  

    str = [str0 stringbyreplacingoccurrencesofstring :@" " withstring:@"@"];   

拓展:使用下面這個方法整體替換字元串還可以設定替換的區域。 

stringbyreplacingoccurrencesofstring:(nsstring *)withstring:(nsstring *) options:(nsstringcompareoptions) range:(nsrange)

7.字元串尾部添加

使用alloc在記憶體中建立字元串對象後邊可以動态的操作這個字元串,修改與添加等。

appendstring 方法:向字元串尾部添加一個字元串。

appendformat方法:向字元串尾部添加多個類型的字元串,可以添加任意數量與類型的字元串。

    nsmutablestring * str = [[nsmutablestring alloc] init];  

    //添加普通的字元串  

    [str appendstring:@"aaa"];  

    //添加字元串 整型 字元型  

    [str appendformat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];  

    nslog(@"str = %@",str);  

8. 字元串中删除元素

stringwithstring 方法:用于建立字元串初始化指派

rangeofstring方法:傳入字元串傳回一個在該字元串中的範圍 也可以寫 nsmakerange(0, 3) 意思是範圍在字元串0位到第3位

deletecharactersinrange:删除字元串 參數為range 就是删除的範圍。

    //建立字元串  

    nsmutablestring *str = [nsmutablestring stringwithstring:@"justcoding is best!"];  

    //删除字元串中含"justcoding"的字元  

    [str deletecharactersinrange: [str rangeofstring: @"justcoding"]];      

9. 字元串插入

insertstring方法:第一個參數 插入的字元串對象, 第二個參數 插入的位置。

    nsmutablestring *str = [nsmutablestring stringwithstring:@"justcoding is"];  

    //在str第10位插入字元串  

    [str insertstring:@"best man" atindex:10];  

10. 字元串拷貝

    nsmutablestring *str1 = [nsmutablestring stringwithstring: @"字元串1"];  

    nsmutablestring *str2;  

    //字元串指派  

    str2 = str1;  

    [str2 appendstring: @" 和字元串2"];  

    nslog (@"str1 = %@", str1);  

    nslog (@"str2 = %@", str2);      

為什麼給str2添加資料後 str1的資料也改變了?這就是指針的魅力所在,因為我們操作的是指針,str2 = str1  意思是兩個指針同時指向一塊記憶體,那麼str2指向的記憶體内容改變以後str1當然跟着改變了。

11. 字元串與指定類型轉換

如果轉換的參數非法的話不會抛出異常,好比用中文去轉整型。不會報錯 但是轉換結果為 0  ,預設值。

    //字元串轉整型  

    nsstring *str0 = @"1121";  

    //nsstring *str0 = @"中國";  

    //把字元串強轉成整型  

    int i = [str0 intvalue];  

    nslog (@"轉換後:%i", i);   

    //字元串轉interger  

      nsstring *str1 = @"1985";  

    // nsstring *str1 = @"中國";  

    //把字元串強轉成interger  

    nsinteger ii = [str1 integervalue];  

    nslog (@"轉換後:%i", ii);   

    //字元串轉double  

    nsstring *str2 = @"3.145926";  

    //nsstring *str2 = @"中國";  

    //把字元串強轉成double  

    double d = [str2 doublevalue];  

    nslog (@"轉換後:%f", d);   

    //字元串轉float  

    nsstring *str3 = @"3.145926";  

     //nsstring *str3 = @"中國";  

    //把字元串強轉成float  

    double f = [str3 floatvalue];  

    nslog (@"轉換後:%f", f);   

nsstring 常用方法總結

+(id)stringwithcontentsoffile:path encoding:enc err

建立一個新字元串并将其設定為 path 指定檔案的内容,使用字元編碼 enc,在err 上傳回錯誤

+(id)stringwithcontentsofurl:url encoding:enc err

建立一個新字元串并将其設定為 url 所指向的内容,使用字元編碼 enc,在err 上傳回錯誤

+(id)string

建立一個新的空字元串

+(id)stringwithstring:nsstring

建立一個新字元串,将其内容設定為 nsstring 内容

-(id)initwithstring:nsstring

将字元串内容設定為 nsstring 内容

-(id)initwithcontentsoffile:path encoding:enc error:err

将字元串設定為 path 指定檔案的内容,使用字元編碼 enc,在err 上傳回錯誤

-(id)initwithcontentsofurl:url encoding:enc error:err

将字元串設定為 url 所指向的内容,使用字元編碼 enc,在err 上傳回錯誤

-(unsigned int)length

傳回字元串中字元數目

-(unichar)characteratindex:i

傳回索引i 所在unicode 字元

-(nsstring*)substringfromindex:i

傳回從索引 i 開始到結尾的子字元串

-(nsstring*)substringwithrange:range

根據指定範圍傳回子字元串

-(nsstring*)substringtoindex:i

傳回從字元串開始到 索引 i 的子字元串

-(nscomparator*)caseinsensitivecompare:nsstring

比較兩個字元串大小,忽略大小寫

-(nscomparator*)compare:nsstring

比較兩個字元串大小

-(bool)hasprefix:nsstring

測試字元串是否以 nsstring 開始

-(bool)hassuffix:nsstring

測試字元串是否以 nsstring 結尾

-(bool)isequaltostring:nsstring

測試兩個字元串是否相等

-(nsstring*)capitalizedstring

傳回字元串,串中的每個單詞的首字母大寫,其餘字母小寫

-(nsstring*)lowercasestring

傳回轉換為小寫的字元串

-(nsstring*)uppercasestring

傳回轉換為大寫的字元串

-(const char*)utf8string

傳回utf8編碼格式的字元串

-(double)doublevalue

傳回轉換為double 類型的字元串

-(float)floatvalue

傳回轉換為 float 類型的字元串

-(nsinteger)integervalue

傳回轉換為 nsinteger 類型的新字元串

-(int)intvalue

傳回轉換為 int 的字元串

nsmutablestring 可修改字元串常用方法

+(id)stringwithcapacity:size

建立一個字元串,容量為size大小

-(id)initwithcapacity:size

初始化一個字元串,容量為size

-(void)setstring:nsstring

将字元串設定為 nsstring

-(void)appendstring:nsstring

在字元串末尾追加字元串 nsstring

-(void)deletecharatersinrange:range

删除指定range 中的字元

-(void)insertstring:nsstring atindex:i

以索引 i 為起始位置插入 nsstring

-(void)replacecharatersinrange;range withstring:nsstring

使用 nsstring 替換 range 指定的字元

-(void)replaceoccurrencesofstring:nsstring withstring:nsstring2 options:opts range:range

根據選項 opts ,使用指定 range 中的nsstring2 替換所有的 nsstring

轉自:http://blog.csdn.net/qq_31810357