IPHONE 開發 7 -- Object C 02 字符串NSString 與 char* ,字符串的遍歷,字符串的比較,截取與大小寫改變,搜索字符串與替換字符串


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

1.創建經典的NSString字符串

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


  1. - (void)viewDidLoad 

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

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

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

3.字符串的比較

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


hasPrefixe 匹配字符串頭


haSuffix     匹配字符串的尾巴

  1. - (void)viewDidLoad 

  2.     [super viewDidLoad]; 
  3.  
  4.     NSString *str0 = @"雨松MOMO"; 
  5.     NSString *str1 = @"雨松MOMO"; 
  6.      
  7.      
  8.     //字符串完全相等比較 
  9.     if([str0 isEqualToString:str1]) 
  10.     { 
  11.         NSLog(@"字符串完全相等"); 
  12.     } 
  13.      
  14.     //字符串以開頭比較 
  15.     if([str0 hasPrefix:@"雨松"]) 
  16.     { 
  17.         NSLog(@"字符串str0以雨松開頭"); 
  18.     } 
  19.      
  20.     //字符串以結尾比較 
  21.     if([str1 hasSuffix:@"MOMO"]) 
  22.     { 
  23.         NSLog(@"str1字符串以MOMO結尾"); 
  24.     } 
復制代碼

4.字符串的截取與大小寫改變

  1. - (void)viewDidLoad 

  2.     [super viewDidLoad]; 
  3.      
  4.      
  5.     NSString *str0 = @"中文my name is xuanyusong"; 
  6.      
  7.     //截取字符串起始點到index為4之間的內容 
  8.     NSString * to = [str0 substringToIndex:4]; 
  9.      
  10.     NSLog(@"to = %@",to); 
  11.      
  12.     //截取字符index為2 到結尾之間的內容 
  13.     NSString * from = [str0 substringFromIndex:2]; 
  14.      
  15.     NSLog(@"from = %@",from); 
  16.      
  17.      
  18.     //設置截取字符串的范圍  
  19.     //從第二位到第十位 
  20.     NSRange rang = NSMakeRange(2, 10); 
  21.     NSString * strRang = [str0 substringWithRange:rang]; 
  22.     NSLog(@"rang = %@",strRang); 
  23.      
  24.     //設置字符串首字母大寫 
  25.     NSLog(@"str0首字母大寫:%@",[str0 capitalizedString]); 
  26.     //設置字符串全部內容為大寫 
  27.     NSLog(@"str0大寫:%@",[str0 uppercaseString]); 
  28.     //設置字符全部內容為小寫 
  29.     NSLog(@"str0小寫:%@",[str0 lowercaseString]); 
  30.      
復制代碼

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

  1. - (void)viewDidLoad 

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

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

ons:<#(NSStringCompareOptions)#> range:<#(NSRange)#>

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



這一篇主要介紹NSString 類的使用  下面篇詳細介紹NSMutableString類

NSMutableString 類 繼承NSString類,那么NSString 提供的方法在NSMutableString中基本都可以使用,NSMutableString好比一個字符串鏈表,它可以任意的動態在字符串中添加字符串 刪除字符串 指定位置插入字符串,使用它來操作字符串會更加靈活。

1.字符串尾部添加

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


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


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

字符串中刪除元素


stringWithString 方法:用於創建字符串初始化賦值
rangeOfString方法:傳入字符串返回一個在該字符串中的范圍 也可以寫 NSMakeRange(0, 3) 意思是范圍在字符串0位到第3位
deleteCharactersInRange:刪除字符串 參數為Range 就是刪除的范圍。

 

字符串插入

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

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

 

字符串拷貝

字符串與指定類型轉換

  1. - (void)viewDidLoad 

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


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


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM