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

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

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

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

objective-c系列-NSMutableString的更多相关文章

  1. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  2. iOS开发核心语言Objective C —— 全部知识点总结

    本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ...

  3. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  4. Objective C ARC 使用及原理

    手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档过程中的疑问和答案写下来.下面有些是翻译,但 ...

  5. 刨根问底Objective-C Runtime

    http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime-(2)%5Bnil%5D-object-and- ...

  6. Objective-C( Foundation框架 一 字符串)

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  7. [转] NSString / NSMutableString 字符串处理,常用代码

     原文 :  http://justcoding.iteye.com/blog/1405951 Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString , ...

  8. 【转】 NSString / NSMutableString 字符串处理,常用代码 (实例)

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  9. NSString / NSMutableString 字符串处理,常用代码 (实例)

    http://blog.csdn.net/likendsl/article/details/7417878 Objective-C 中核心处理字符串的类是 NSString 与 NSMutableSt ...

随机推荐

  1. SQL Server代理(10/12):使用代理账号运行作业

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,你查看了msdb库下用 ...

  2. CSS魔法堂:说说Float那个被埋没的志向

    前言  定位系统中第一难理解就是Normal flow,而第二就非Float莫属了,而Float难理解的原因有俩,1. 一开头我们就用错了:2. 它跟Normal flow靠得太近了.本文尝试理清Fl ...

  3. Java魔法堂:内部类详解

    一.前言 对于内部类平时编码时使用的场景不多,比较常用的地方应该就是绑定事件处理程序的时候了(从C#.JS转向Java阵营的孩子总不不习惯用匿名内部类来做事件订阅:().本文将结合Bytecode对四 ...

  4. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师的要求,大多是招JA ...

  5. 【转载】8天学通MongoDB——第四天 索引操作

    这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅. 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又 ...

  6. 从CPU的运行到函数调用做个了解

    CPU的内部结构 我们都知道CPU是一台电脑的核心部件,所有的程序都是通过它运行的,那么CPU是如何让一个程序跑起来的呢?我们今天就来一起简单的做个了解,首先看下CPU的基本结构 程序流程 假如现在我 ...

  7. C#微信公众平台开发—高级群发接口

    涉及access_token的获取请参考<C#微信公众平台开发—access_token的获取存储与更新> 一.为了实现高级群发功能,需要解决的问题 1.通过微信接口上传图文消息素材时,J ...

  8. Web API Filter ActionFilterAttribute 使用

    WebApi 提供两种过滤器的类型: 1.ActionFilterAttribute 2.exceptionFilterAttribute 两个类都是抽象类,ActionFilter 主要实现执行请求 ...

  9. ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

    首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...

  10. 在吉日嘎拉DotNet.WebForm中使用FluentScheduler调度任务

    有些用户一直说系统发送的邮件一直收不到,投诉系统不正常,这时候怎么洗刷冤屈呢?将发送的每一封Email都保存到数据库中,并记录发送的日志,让用户无话可说. 自己创建3个表: MessageFailed ...