關於NSString和NSMutableString的相關用法和基本介紹

Objective-C 中核心處理字符串的類是 NSString 與 NSMutableString ,這兩個類最大的區別就是NSString 創建賦值以後該字符串的內容與長度不能在動態的更改,除非重新給這個字符串賦值。而NSMutableString 創建賦值以後可以動態在該字符串上更改內容與長度。

 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

 

1.創建NSString字符串

 

NSString 與 char* 最大的區別就是 NSString是一個objective對象,而char* 是一個字節數組。@+" 字符串 " 這個符號爲objective-c NSString 字符串常量的標準用法,char* 創建的時候 無需添加@

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     //經典的字符串賦值  
  6.     NSString *str0 = @"my name is justcoding !";  
  7.       
  8.     //字符串格式化合並分別包括  
  9.     //NSString*類型 int類型 char*類型   
  10.     NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];  
  11.       
  12.     //字符串賦值 參數中只可以寫一個字符串 和第一種很像  
  13.     NSString *str2 = [NSString stringWithString:@"我是字符串"];  
  14.      
  15.     //字符串轉換爲utf-8格式 參數爲char*類型  
  16.     NSString *str3 = [NSString stringWithUTF8String:"字符串轉換utf-8格式"];  
  17.       
  18.       
  19.     //字符串合併  
  20.     int i  = 100;  
  21.     char*c = "xuanyusong";  
  22.     NSString *temp = @"我是臨時字符串";  
  23.       
  24.     //在字符串temp的基礎繼續添加 int i 與 char* c 組成一個新的字符串  
  25.     NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字符型 :%s",i,c];  
  26.       
  27.     //在字符串temp的基礎繼續添加temp 並組成一個新的字符串  
  28.     NSString *str5 = [temp stringByAppendingString:temp];   
  29.       
  30.     //字符串輸出  
  31.     NSLog(@"str0 = %@", str0);  
  32.     NSLog(@"str1 = %@", str1);  
  33.     NSLog(@"str2 = %@", str2);  
  34.     NSLog(@"str3 = %@", str3);  
  35.     NSLog(@"str4 = %@", str4);  
  36.     NSLog(@"str5 = %@", str5);  
  37.       
  38. }  

 

2.字符串的遍歷 

 

每一個字符串其實是由若干個char字符組成,字符串的遍歷實際上就是將字符串中的每一個字符提取出來。

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     //經典的字符串賦值  
  6.     NSString *str = @"YUSONGMOMO";  
  7.       
  8.     //字符串的長度  
  9.     int count = [str length];  
  10.       
  11.     NSLog(@"字符串的長度是%d",count);  
  12.       
  13.     //遍歷字符串中的每一個字符  
  14.     for(int i =0; i < count; i++)  
  15.     {  
  16.         char c = [str characterAtIndex:i];  
  17.         NSLog(@"字符串第 %d 位爲 %c",i,c);  
  18.     }  
  19.       
  20. }  
 

3.字符串的比較 

 

isEqualToString 比較字符串是否完全相等,大小寫不一樣也無法完全匹配。

hasPrefixe 匹配字符串頭

haSuffix     匹配字符串的尾巴

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.       
  6.     NSString *str0 = @"justcoding";  
  7.     NSString *str1 = @"justcoding";  
  8.       
  9.       
  10.     //字符串完全相等比較  
  11.     if([str0 isEqualToString:str1])  
  12.     {  
  13.         NSLog(@"字符串完全相等");  
  14.     }  
  15.       
  16.     //字符串以開頭比較  
  17.     if([str0 hasPrefix:@"just"])  
  18.     {  
  19.         NSLog(@"字符串str0以just開頭");  
  20.     }  
  21.       
  22.     //字符串以結尾比較  
  23.     if([str1 hasSuffix:@"coding"])  
  24.     {  
  25.         NSLog(@"str1字符串以coding結尾");  
  26.     }  
  27. }  
 
C代碼  收藏代碼
  1. //isEqualToString方法      
  2. NSString *astring01 = @"This is a String!";  
  3. NSString *astring02 = @"This is a String!";  
  4. BOOL result = [astring01 isEqualToString:astring02];  
  5. NSLog(@"result:%d",result);  
 
C代碼  收藏代碼
  1. //compare方法(comparer返回的三種值)      
  2. NSString *astring01 = @"This is a String!";  
  3. NSString *astring02 = @"This is a String!";      
  4. BOOL result = [astring01 compare:astring02] = = NSOrderedSame;      
  5. NSLog(@"result:%d",result);      
  6. //NSOrderedSame 判斷兩者內容是否相同  
 
C代碼  收藏代碼
  1. NSString *astring01 = @"This is a String!";  
  2. NSString *astring02 = @"this is a String!";  
  3. BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;      
  4. NSLog(@"result:%d",result);  
  5. //NSOrderedAscending 判斷兩對象值的大小(按字母順序進行比較,astring02大於astring01爲真)  
 
C代碼  收藏代碼
  1. NSString *astring01 = @"this is a String!";  
  2. NSString *astring02 = @"This is a String!";  
  3. BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;      
  4. NSLog(@"result:%d",result);      
  5. //NSOrderedDescending 判斷兩對象值的大小(按字母順序進行比較,astring02小於astring01爲真)  
 
C代碼  收藏代碼
  1. //不考慮大 小寫比較字符串1  
  2. NSString *astring01 = @"this is a String!";  
  3. NSString *astring02 = @"This is a String!";  
  4. BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;      
  5. NSLog(@"result:%d",result);      
  6. //NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,astring02小於astring01爲 真)  
 
C代碼  收藏代碼
  1. //不考慮大小寫比較字符串2  
  2. NSString *astring01 = @"this is a String!";  
  3. NSString *astring02 = @"This is a String!";  
  4. BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;      
  5. NSLog(@"result:%d",result);      
  6. //NSCaseInsensitiveSearch:不區分大小寫比較 NSLiteralSearch:進行完全比較,區分大小寫 NSNumericSearch:比較字符串的字符個數,而不是字符值。  
  

4. 文件字符串操作(讀寫)

C代碼  收藏代碼
  1. //從文件讀取字符串:initWithContentsOfFile方法  
  2. NSString *path = @"astring.text";  
  3. NSString *astring = [[NSString alloc] initWithContentsOfFile:path];  
  4. NSLog(@"astring:%@",astring);  
  5. [astring release]; //astring=nil;  
 
C代碼  收藏代碼
  1. //寫字符串到文件:writeToFile方法  
  2. NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];  
  3. NSLog(@"astring:%@",astring);  
  4. NSString *path = @"astring.text";      
  5. [astring writeToFile: path atomically: YES];  
  6. [astring release];  //astring=nil;  
 

* ios5 不支持release iOS應用開發:什麼是ARC?

 

C代碼  收藏代碼
  1. //擴展路徑  
  2. NSString *Path = @"~/NSData.txt";  
  3. NSString *absolutePath = [Path stringByExpandingTildeInPath];  
  4. NSLog(@"absolutePath:%@",absolutePath);  
  5. NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);  

 

C代碼  收藏代碼
  1. //文件擴展名  
  2. NSString *Path = @"~/NSData.txt";  
  3. NSLog(@"Extension:%@",[Path pathExtension]);  
 

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

C代碼  收藏代碼
  1. //改變字符串的大小寫  
  2. NSString *string1 = @"A String";  
  3. NSString *string2 = @"String";  
  4. NSLog(@"string1:%@",[string1 uppercaseString]);//大寫  
  5. NSLog(@"string2:%@",[string2 lowercaseString]);//小寫  
  6. NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小  
 
Java代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.       
  6.     NSString *str0 = @"中文my name is xuanyusong";  
  7.       
  8.     //截取字符串起始點到index爲4之間的內容  
  9.     NSString * to = [str0 substringToIndex:4];  
  10.       
  11.     NSLog(@"to = %@",to);  
  12.       
  13.     //截取字符index爲2 到結尾之間的內容  
  14.     NSString * from = [str0 substringFromIndex:2];  
  15.       
  16.     NSLog(@"from = %@",from);  
  17.       
  18.       
  19.     //設置截取字符串的範圍   
  20.     //從第二位開始,長度爲十  
  21.     NSRange rang = NSMakeRange(210);  
  22.     NSString * strRang = [str0 substringWithRange:rang];  
  23.     NSLog(@"rang = %@",strRang);  
  24.       
  25.     //設置字符串首字母大寫  
  26.     NSLog(@"str0首字母大寫:%@",[str0 capitalizedString]);  
  27.     //設置字符串全部內容爲大寫  
  28.     NSLog(@"str0大寫:%@",[str0 uppercaseString]);  
  29.     //設置字符全部內容爲小寫  
  30.     NSLog(@"str0小寫:%@",[str0 lowercaseString]);  
  31.       
  32. }  
 

6.搜索字符串與替換字符串

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.       
  6.     NSString *str0 = @"中文my name is xuanyusong";  
  7.     NSString *temp = @"is";  
  8.     NSRange rang = [str0 rangeOfString:temp];  
  9.       
  10.     NSLog(@"搜索的字符串在str0中起始點的index 爲 %d", rang.location);  
  11.     NSLog(@"搜索的字符串在str0中結束點的index 爲 %d", rang.location + rang.length);  
  12.       
  13.     //將搜索中的字符串替換成爲一個新的字符串  
  14.     NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"哇咔咔卡卡咔"];   
  15.     NSLog(@"替換後字符串爲%@", str);  
  16.   
  17.       
  18.     //將字符串中" " 全部替換成 *  
  19.     str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"];   
  20.     NSLog(@"替換後字符串爲%@", str);  
  21.       
  22.       
  23. }  
 

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

stringByReplacingOccurrencesOfString:(NSString *)withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)

 

7.字符串尾部添加

 

使用alloc在內存中創建字符串對象後邊可以動態的操作這個字符串,修改與添加等。

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

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

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.      
  6.     NSMutableString * str = [[NSMutableString alloc] init];  
  7.       
  8.     //添加普通的字符串  
  9.     [str appendString:@"aaa"];  
  10.       
  11.     //添加字符串 整型 字符型  
  12.     [str appendFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];  
  13.      
  14.     NSLog(@"str = %@",str);  
  15.       
  16. }  

 

8. 字符串中刪除元素

 

stringWithString 方法:用於創建字符串初始化賦值

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

deleteCharactersInRange:刪除字符串 參數爲Range 就是刪除的範圍。

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     //創建字符串  
  6.     NSMutableString *str = [NSMutableString stringWithString:@"justcoding is best!"];  
  7.       
  8.     //刪除字符串中含"justcoding"的字符  
  9.     [str deleteCharactersInRange: [str rangeOfString: @"justcoding"]];      
  10.       
  11.     NSLog(@"str = %@",str);  
  12.       
  13. }  
 

9. 字符串插入

 

stringWithString 方法:用於創建字符串初始化賦值

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

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     //創建字符串  
  6.     NSMutableString *str = [NSMutableString stringWithString:@"justcoding is"];  
  7.       
  8.     //在str第10位插入字符串  
  9.     [str insertString:@"best man" atIndex:10];  
  10.       
  11.     NSLog(@"str = %@",str);  
  12.       
  13. }  
 

10. 字符串拷貝

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     //創建字符串  
  6.     NSMutableString *str1 = [NSMutableString stringWithString: @"字符串1"];  
  7.     NSMutableString *str2;  
  8.       
  9.     //字符串賦值  
  10.     str2 = str1;  
  11.       
  12.     [str2 appendString: @" 和字符串2"];  
  13.       
  14.     NSLog (@"str1 = %@", str1);  
  15.       
  16.     NSLog (@"str2 = %@", str2);      
  17. }  
 

爲什麼給str2添加數據後 str1的數據也改變了?這就是指針的魅力所在,因爲我們操作的是指針,str2 = str1  意思是兩個指針同時指向一塊內存,那麼str2指向的內存內容改變以後str1當然跟着改變了。

 

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

 

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

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     //字符串轉整型  
  6.     NSString *str0 = @"1121";  
  7.     //NSString *str0 = @"中國";  
  8.       
  9.     //把字符串強轉成整型  
  10.     int i = [str0 intValue];  
  11.       
  12.     NSLog (@"轉換後:%i", i);   
  13.       
  14.     //字符串轉interger  
  15.       NSString *str1 = @"1985";  
  16.     // NSString *str1 = @"中國";  
  17.       
  18.     //把字符串強轉成interger  
  19.     NSInteger ii = [str1 integerValue];  
  20.       
  21.     NSLog (@"轉換後:%i", ii);   
  22.       
  23.       
  24.       
  25.     //字符串轉double  
  26.     NSString *str2 = @"3.145926";  
  27.     //NSString *str2 = @"中國";  
  28.       
  29.     //把字符串強轉成double  
  30.     double d = [str2 doubleValue];  
  31.       
  32.     NSLog (@"轉換後:%f", d);   
  33.       
  34.     //字符串轉float  
  35.     NSString *str3 = @"3.145926";  
  36.      //NSString *str3 = @"中國";  
  37.     //把字符串強轉成float  
  38.     double f = [str3 floatValue];  
  39.       
  40.     NSLog (@"轉換後:%f", f);   
  41.       
  42. }

從一個字符串中直接取出數組

 NSString *str= [NSString stringWithFormat:@"Norman,Stanley,Fletcher"];

    NSArray *arr=[str componentsSeparatedByString:@","];


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章