**********************************************
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]);
**********************************************
**********************************************