objective C中的字串(三)

來源:互聯網
上載者:User

標籤:des   style   blog   http   java   使用   os   strong   

holydancer原創,如需轉載,請在顯要位置註明:

轉自holydancer的CSDN專欄,原文地址:http://blog.csdn.net/holydancer/article/details/7343561

 

objective C中的字串操作

 

在OC中建立字串時,一般不使用C的方法,因為C將字串作為字元數組,所以在操作時會有很多不方便的地方,在Cocoa中NSString整合的一些方法,可以很方便的操作字串,下面舉幾個例子:

 

1、建立:

直接利用等號賦值

NSString * [email protected]"我是字串";

stringWithFormat方法

NSString *str2=[NSString stringWithFormat:@"我是參數字串%d,%d",11,111"];

2,合并:

NSString 字串是不可改變的,可以在原字串的基礎上產生新的字串,但是原字串並沒有改變,但是NSString 提供了一個子類:NSMutableString.該類是可變的,NSString可用的方法也同樣適用於NSMutableString,但是使用之前要預先聲明:

NSMutableString *str3 = [NSMutableString stringWithCapacity:50];

 需要注意的是,該處聲明時雖然給了50的容量,但是NSMutableString會自動擴充,所以不用擔心給的空間小了。

建立了NSMutableString字串,我們就可以進行合併作業了,常用方法有:

 

[plain] view plaincopy 
  1. NSMutableString *str3 =[NSMutableString stringWithCapacity:50];  
  2.      NSString *[email protected]"NSString 字串";  
  3.      [str3 appendString:str4];  
  4.      [str3 appendFormat:@"%d",5];  
  5.      NSLog(str3);  

以上代碼輸出結果為:“NSString字串5”;

 

3,刪減:

字串的刪減需要用到一個輔助結構體:NSRange;

NSRange的兩個屬性length,location,既可用於圖形輔助,又可用於字串輔助,在字串輔助中,表示字串中的一段範圍,location指起始位置,length指包含字元的個數。建立NSRange的方法有三種:

(一)

NSRange range;

range.location = 10;

range.length = 2;

(二)

NSRange range={10,2};

(三)

NSRange range=NSMakeRange(10,2);//此種方法較為常用。

下面看段代碼,如何使用NSRange輔助修改字串內容:

 

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main(int argc, const char * argv[])  
  4. {  
  5.   
  6.     @autoreleasepool {  
  7.           
  8.       NSMutableString *str=[NSMutableString stringWithCapacity:5];  
  9.         [str appendString:@"I am holydancer"];  
  10.         //判斷str裡是否有"am",並將其範圍取出。  
  11.         NSRange range =[str rangeOfString:@"am"];  
  12.         [str deleteCharactersInRange:range];  
  13.         NSLog(@"%@,%lu,%lu",str,range.length,range.location);  
  14.          
  15.           
  16.           
  17.     }  
  18.     return 0;  
  19. }  

輸出結果如下:

I  holydancer,2,2

 

4,比較:

(一)是否相等的比較:

和java中某些情況類似,字串並不能直接用==比較,==比較的是兩個字串是否是同一個對象,而我們要比較的通常是兩個字串是否相等,這時應該使用isEqualToString,而不是用==比較其指標值。isEqualToString的傳回值是BOOL類型,為YES和NO。

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main(int argc, const char * argv[])  
  4. {  
  5.   
  6.     @autoreleasepool {  
  7.           
  8.         NSString *str1 = @"holydancer";  
  9.         NSString *str2 = @"holydancer";  
  10.         if([str1 isEqualToString:str2])  
  11.         {  
  12.             NSLog(@"字串內容相等");  
  13.         }  
  14.      
  15.           
  16.     }  
  17.     return 0;  
  18. }  

(二)字串大小的比較:

 

字串根據排列順序的不同,會有大小的差異,如果我們要比較兩個字串的大小的話,可以使用compare方法。compare 方法返回的結果有三種:NSOrderedAscending,NSOrderedSame,NSOrderedDescending,另外,在使用compare方法時可以添加參數來決定是否區分大小寫,或者聲明為比較字串個數而不是字元值等比較條件。

具體使用看如下DEMO:

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main(int argc, const char * argv[])  
  4. {  
  5.   
  6.     @autoreleasepool {  
  7.           
  8.         NSString *str1 = @"holydancer";  
  9.         NSString *str2 = @"dancerholy";  
  10.         NSComparisonResult result1 =[str1 compare:str2];  
  11.         if (result1==NSOrderedSame) {  
  12.             NSLog(@"相等");  
  13.         }else if (result1 == NSOrderedAscending) {  
  14.             NSLog(@"str1小於str2");  
  15.         }else {  
  16.             NSLog(@"str1大於str2");  
  17.         }  
  18.           
  19.     }  
  20.     return 0;  
  21. }  

 

如果要忽略大小寫話,可以在options 裡面加一個參數NSCaseInsensitiveSearch;具體如下

NSComparisonResult result2 =[str1 compare:str2 options:NSCaseInsensitiveSearch];

和NSCaseInsensitiveSearch對應的條件還有NSLiteralSearch(區分大小寫),NSNumericSearch(按字元個數比較),並可以使用"|"來同時滿足多個條件。

(三)判斷字串的開頭和結尾

hasPrefix方法判斷是否以某字串開頭,hasSuffix判斷是否以某字串結尾。

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main(int argc, const char * argv[])  
  4. {  
  5.   
  6.     @autoreleasepool {  
  7.           
  8.         NSString *str1 = @"holydancer";  
  9.         if ([str1 hasPrefix:@"holy"]) {  
  10.             NSLog(@"str1以holy開頭");  
  11.         }  
  12.         if ([str1 hasSuffix:@"dancer"]) {  
  13.             NSLog(@"str1以dancer結尾");  
  14.         }  
  15.           
  16.           
  17.     }  
  18.     return 0;  
  19. }  

【四】判斷字串為空白並且沒有值(長度為0)

  NSString *urlString ="";

   if (!urlString&&[urlString length] == 0)

    {

      NSLog(@”字串為空白或者長度為0”);

    }

 }

 

關鍵字:objective-c ,objective c , oc ,字串

相關文章

聯繫我們

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