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

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

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

  • 相关阅读:
    A5的文档(PDF或doc等)打印至A4纸上,使其自动缩放至适合纸张的大小,并不改变原格式
    世界各国各个国家网址网站域名后缀名国名英文缩写/简称对照表
    企业支付宝获得收款二维码的方法
    “Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足”的解决方案
    打开、查找超大文件可使用—— EmEditor
    reportqueue文件夹占用C盘大量空间的解决方案
    WPS表格:将名用“×”代替而保留姓(如:将“王老五”展示为“王××”,将“张三”展示为“张×”)
    WPS表格:通过最末几位字得出一个值(比如通过单位名判断是“法人组织”还是“非法人组织”)
    WPS表格:隐藏身份证号的几种方法(1、显示前几位;2、隐藏中间几位)
    WPS表格:批量粘贴身份证号,防止出现“科学计数法”或“末尾三个零”
  • 原文地址:https://www.cnblogs.com/hyuganatsu/p/NSMutableString.html
Copyright © 2011-2022 走看看