·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> objective-c系列-NSMutableString

objective-c系列-NSMutableString

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

**********************************************

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

**********************************************

 

**********************************************