Objective-C文法之字串那些事
雨松MOMO原創文章如轉載,請註明:轉載至我的獨立網域名稱部落格雨松MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/381
Objective-C 中核心處理字串的類是 NSString 與 NSMutableString ,這兩個類最大的區別就是NSString 建立賦值以後該字串的內容與長度不能在動態更改,除非重新給這個字串賦值。而NSMutableString 建立賦值以後可以動態在該字串上更改內容與長度。
1.建立經典的NSString字串
NSString 與 char* 最大的區別就是 NSString是一個objective對象,而char* 是一個位元組數組。
@+ " 字串 " 這個符號為objective-c NSString 字串常量的標準用法,char* 建立的時候 無需添加@
- (void)viewDidLoad{ [super viewDidLoad]; //經典的字串賦值 NSString *str0 = @"我是雨松MOMO"; //字串格式化合并分別包括 //NSString*類型 int類型 char*類型 NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"雨松MOMO", 25,"xuanyusong@gmail.com"]; //字串賦值 參數中只可以寫一個字串 和第一種很像 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字元組成,字串的遍曆實際上就是將字串中的每一個字元提取出來。
- (void)viewDidLoad{ [super viewDidLoad]; //經典的字串賦值 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 匹配字串的尾巴
- (void)viewDidLoad{ [super viewDidLoad]; NSString *str0 = @"雨松MOMO"; NSString *str1 = @"雨松MOMO"; //字串完全相等比較 if([str0 isEqualToString:str1]) { NSLog(@"字串完全相等"); } //字串以開頭比較 if([str0 hasPrefix:@"雨松"]) { NSLog(@"字串str0以雨鬆開頭"); } //字串以結尾比較 if([str1 hasSuffix:@"MOMO"]) { NSLog(@"str1字串以MOMO結尾"); }}
4.字串的截取與大小寫改變
- (void)viewDidLoad{ [super viewDidLoad]; 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]); }
5.搜尋字串與替換字串
- (void)viewDidLoad{ [super viewDidLoad]; NSString *str0 = @"中文my name is xuanyusong"; 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:@"@"]; NSLog(@"替換後字串為%@", str); }
拓展:使用下面這個方法整體替換字串還可以設定替換的地區。
ons:<#(NSStringCompareOptions)#> range:<#(NSRange)#>
stringByReplacingOccurrencesOfString:(NSString *)withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)
這一篇主要介紹NSString 類的使用 下面篇詳細介紹NSMutableString類,大小盆友們要支援MOMO喔 嘻嘻~~~