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* ,字符串的遍历,字符串的比较,截取与大小写改变,搜索字符串与替换字符串...的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。