objective-c系列-NSMutableString,objective-c
**********************************************
NSMutableString為NSString的子類,除了父類的方法,NSMutableStirng還有一些增刪改和替換的方法
**********************************************
構造方法
新增的一個構造方法:
NSMutableString *mstring = [[ NSMutableString alloc]initWithCapacity:100];
//注意事項:
// 定義一個指標
NSMutableString *mstr;
// mstr=@"abc"; //mstr指向了常量,所以是不可變
mstr = [[NSString alloc] init];// 這樣子是開闢的不可變字串空間,也是不可變字串
mstr = [[NSMutableStirng alloc] init];// 這樣子就可變了
同理:
NSString str = [[NSMutableString alloc] init];// str也是可變字串哦!
**********************************************
// 增
NSMutableString *mstr = [[NSMutableString alloc]init];
//往字串mstr尾部追加一個格式串
[mstr appendFormat:@"[a=%i]-[c=%c]-[s=%s]",123,'x',"cstring" ];
NSLog(@"mstr: %@",mstr);
NSLog(@"mstr的長度為: %lu", [mstr length]);
//往字串mstr尾部追加一個oc字串, 對應c中的strcat
[mstr appendString:@"-[appendString]"];
NSLog(@"mstr: %@",mstr);
NSLog(@"mstr的長度為: %lu", [mstr length]);
**********************************************
// 刪
NSMutableString *mstr = [[ NSMutableString alloc]initWithString:@"123abc123abc"];
NSLog(@"before delete, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
//指定範圍刪除
[mstr deleteCharactersInRange:NSMakeRange(9, 3)];
NSLog(@"after delete, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
//先尋找得到範圍,再根據這個範圍去刪除
// mstr的內容為: 123abc123
// 在mstr中找abc的範圍,應該返回一個結構體 {3,3}
// 再將這個結構體傳入 deleteCharactersInRange:方法,完成對abc的刪除
[mstr deleteCharactersInRange:[mstr rangeOfString:@"abc"]];
NSLog(@"第二次刪除abc之後, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
//問題1:如何刪除在字串中多次出現的子串?
// 問題2:如何替換在字串中多次出現的子串?
// 1,迴圈處理
[mstr appendString:@"abc123abc123abc123"];
NSLog(@"追加一個abc123...之後, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
// mstr中有三個abc子串
printf("NSNotFound=%lu\n",NSNotFound);
while (1) {
NSRange range=[mstr rangeOfString:@"abc"];
if (range.location==NSNotFound) {
break;
}
[mstr deleteCharactersInRange:range];
// [mstr replaceCharactersInRange:[mstr rangeOfString:@"123"] withString:@"woca"];
}
NSLog(@"在迴圈中刪除abc之後, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
//用一個新字串替換原來字串中的某個範圍內的字元
[mstr replaceCharactersInRange:NSMakeRange(2, 1) withString:@"[replace]"];
NSLog(@"在替換方法調用之後, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
//在某個下標處插入一個字串
[mstr insertString:@"[insertString]" atIndex:1];
NSLog(@"在插入方法調用之後, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
//設定字串
[mstr setString:@"[this is setString]"];
NSLog(@"在setString方法調用之後, mstr: %@, mstr的長度為:%lu", mstr,[mstr length]);
**********************************************
**********************************************