当前位置: 首页 > news >正文

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

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

 

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

转载于:https://www.cnblogs.com/hyuganatsu/p/NSMutableString.html

相关文章:

  • MySQL 数据库开发规范
  • 20 种提升网页速度的技巧
  • xdebug代码调试工具
  • AngularJS Toaster
  • 静态网站生成器将会成为下一个大热门
  • 二维数组举例
  • 7月上旬全球域名新增13.5万个 环比减少近29%
  • sftp详细参数说明
  • Shane版详细设计书 文档模板
  • 简比:三大电商巨头的平台、支付、物流
  • VC++ 如何让ScrollView视图显示滚动条
  • android自定义View的用法
  • Unsupported major.minor version 51.0(jdk版本错误)
  • 最近读cocoaui源代码有感
  • 【原创】MySQL 5.5 新增SIGNAL异常处理
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • JSDuck 与 AngularJS 融合技巧
  • Linux Process Manage
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • React-Native - 收藏集 - 掘金
  • REST架构的思考
  • 服务器从安装到部署全过程(二)
  • 看域名解析域名安全对SEO的影响
  • 如何优雅地使用 Sublime Text
  • 如何在GitHub上创建个人博客
  • 入门到放弃node系列之Hello Word篇
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 双管齐下,VMware的容器新战略
  • 限制Java线程池运行线程以及等待线程数量的策略
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​虚拟化系列介绍(十)
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #AngularJS#$sce.trustAsResourceUrl
  • #大学#套接字
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (2)nginx 安装、启停
  • (23)Linux的软硬连接
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (循环依赖问题)学习spring的第九天
  • (一)基于IDEA的JAVA基础1
  • (转)创业家杂志:UCWEB天使第一步
  • .axf 转化 .bin文件 的方法
  • .htaccess配置重写url引擎
  • .libPaths()设置包加载目录
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ IO.File ] FileSystemWatcher
  • [2016.7 test.5] T1
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [ACTF2020 新生赛]Include
  • [AIGC] Redis基础命令集详细介绍