zoukankan      html  css  js  c++  java
  • objective-c系列-NSMutableString

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

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

        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 ",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(21withString:@"[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]);

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

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

  • 相关阅读:
    共创力董事长杨学明先生受邀参加CED智慧大会!
    杨学明老师为华宇金信(北京)软件有限公司提供为期两天的内训服务!
    《互联网敏捷测试管理实践》课程大纲 2018.12.15~16 (上海)
    共创力咨询杨学明老师为国电南瑞提供两天的内训服务!
    《软件测试管理》深圳公开课预告 2018.11.23~24 中南海滨大酒店
    软件测试管理的十大挑战
    对于开发人员修改代码引发新问题的处理措施
    热烈庆祝杨学明老师为上海某著名金融互联网公司提供两天的内训服务!
    《高效的互联网研发项目管理》课程大纲
    《软件测试管理》北京公开课预告 2018.9.28~29
  • 原文地址:https://www.cnblogs.com/hyuganatsu/p/NSMutableString.html
Copyright © 2011-2022 走看看