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類 
NSMutableString 類 繼承NSString類,那么NSString 提供的方法在NSMutableString中基本都可以使用,NSMutableString好比一個字符串鏈表,它可以任意的動態在字符串中添加字符串 刪除字符串 指定位置插入字符串,使用它來操作字符串會更加靈活。
1.字符串尾部添加
使用alloc在內存中創建字符串對象后邊可以動態的操作這個字符串,修改與添加等。
appendstring 方法:向字符串尾部添加一個字符串。
appendFormat方法:向字符串尾部添加多個類型的字符串,可以添加任意數量與類型的字符串。
字符串中刪除元素
stringWithString 方法:用于創建字符串初始化賦值
rangeOfString方法:傳入字符串返回一個在該字符串中的范圍 也可以寫 NSMakeRange(0, 3) 意思是范圍在字符串0位到第3位
deleteCharactersInRange:刪除字符串 參數為Range 就是刪除的范圍。
?
字符串插入
stringWithString 方法:用于創建字符串初始化賦值
insertString方法:第一個參數 插入的字符串對象, 第二個參數 插入的位置。
?
字符串拷貝
字符串與指定類型轉換
- (void)viewDidLoad? 
{? 
??? [super viewDidLoad];? 
????? 
??? //創建字符串? 
??? NSMutableString *str1 = [NSMutableString stringWithString: @"字符串1"];? 
??? NSMutableString *str2;? 
????? 
??? //字符串賦值? 
??? str2 = str1;? 
????? 
??? [str2 appendString: @" 和字符串2"];? 
????? 
??? NSLog (@"str1 = %@", str1);? 
????? 
??? NSLog (@"str2 = %@", str2);????? 
}? 復制代碼
為什么給str2添加數據后 str1的數據也改變了?這就是指針的魅力所在,因為我們操作的是指針,str2 = str1? 意思是兩個指針同時指向一塊內存,那么str2指向的內存內容改變以后str1當然跟著改變了。
?
 
轉載于:https://www.cnblogs.com/csj007523/archive/2012/06/25/2562078.html
                            總結
                            
                                以上是生活随笔為你收集整理的IPHONE 开发 7 -- Object C 02 字符串NSString 与 char* ,字符串的遍历,字符串的比较,截取与大小写改变,搜索字符串与替换字符串...的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                            
                                如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。