objective C中的字符串NSStirng經常使用操做

objective C中的字符串操做java

在OC中建立字符串時,通常不使用C的方法,由於C將字符串做爲字符數組,因此在操做時會有不少不方便的地方,在Cocoa中NSString集成的一些方法,能夠很方便的操做字符串,下面舉幾個例子:objective-c

 

1、建立:數組

直接利用等號賦值app

NSString * str1=@"我是字符串";url

stringWithFormat方法spa

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

 

二,合併:指針

NSString 字符串是不可改變的,能夠在原字符串的基礎上生成新的字符串,可是原字符串並無改變,可是NSString 提供了一個子類:NSMutableString.該類是可變的,NSString可用的方法也一樣適用於NSMutableString,可是使用以前要預先聲明:orm

NSMutableString *str3 = [NSMutableString stringWithCapacity:50];對象

 須要注意的是,該處聲明時雖然給了50的容量,可是NSMutableString會自動擴充,因此不用擔憂給的空間小了。

建立了NSMutableString字符串,咱們就能夠進行合併操做了,經常使用方法有:

 

[plain] view plaincopy
 
  1. NSMutableString *str3 =[NSMutableString stringWithCapacity:50];  
  2.      NSString *str4=@"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. }  

 

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

 

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

 

 

 

如下爲http://www.cnblogs.com/langtianya/原創,轉載請註明

5、判斷字符串爲空而且沒有值(長度爲0)

  NSString *urlString ="";

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

    {

      NSLog(@」字符串爲空或者長度爲0」);

    }

 }

 6、字符串是否包含某字符串

若是想知道字符串內的某處是否包含其餘的字符串,使用rangeOfString:
-(NSRange) rangeOfString:(NSString *) astring;


將rangeOfString:發送給一個NSString對象時,傳遞的參數時要查找的字符串。它會返回一個NSRange struct來告訴你一個與這個字符串相匹配的部分從哪裏開始以及匹配上的字符個數。
NSRange range;
range=[filename rangeOfString:@"o,world"];

 也能夠用一下方法,等同java的contains方法

/* containsString: returns YES if the target string is contained within the receiver. Same as calling rangeOfString:options: with no options, thus doing a case-sensitive, non-literal search. localizedCaseInsensitiveContainsString: is the case-insensitive variant. Note that it takes the current locale into effect as well.  Locale-independent case-insensitive operation, and other needs can be achieved by calling rangeOfString:options:range:locale: directly.

 */

- (BOOL)containsString:(NSString *)aString NS_AVAILABLE(10_10, 8_0);

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

相關文章
相關標籤/搜索