一、NSString与NSMutableString

        相信大家对NSString类都不陌生。它是OC中提供的字符串类。它的对象中的字符串都是不可变的,而它的子类NSMutableString类的对象中的字符串就是可变的。

什么是可变与不可变呢?二者的差别就是在已经创建的一个字符串对象中,在程序中能不能更改字符串。比方拼接新的字符串。可变的能够在原字符串中更改,不可变的不能更改。

二、关于字符串的创建

        1> OC字符串的创建小桥前面都已经用过。最简单就是以下这个:
// OC字符串的创建
NSString *str1 = @"葬花 桥";

2> 创建的一个字符串中要带有格式化的拼接字符串。能够这样:

// 格式化一个字符串
NSString *str2 = [[NSString alloc] initWithFormat:@"我的名字叫:%@--%d岁了", @"葬花 桥", 120];
NSString *str2 = [[NSString alloc] initWithFormat:@"我的名字叫:%@--%d岁了", @"葬花 桥", 120];

3> C字符串与OC字符串的相互转换

    // C字符串转换成OC字符串
NSString *str3 = [[NSString alloc] initWithUTF8String: "葬花 桥"]; // OC字符串转换成C字符串
const char *s = [str3 UTF8String];

4> 以文件内容初始化字符串:

// 以文件内容来初始化字符串
NSString *str4 = [[NSString alloc] initWithContentsOfFile:@"/Users/souhanaqiao/Desktop/soubanaqiao.txt" encoding:NSUTF8StringEncoding error:nil];

这一句后,str4中的字符串就是文件soubanaqiao.txt中的内容了,能够看下载图:

小桥认为这就是OC中读取文件。上面的代码仅仅能读取本地的文件内容,还有万能的,既能读本地的也能读网络上的

 NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/souhanaqiao/Desktop/soubanaqiao.txt"];
NSString *str5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

当中NSURL是OC中的资源地址类。它的对象表示的是一个资源的路径,无论是本地的还是网络的,可是本地与网络的协议不同,本地是file,网络的有http。有ftp等等。MJ老师说能够把百度网页的文本内容读取进来,小桥这里试试:

NSURL *baidu = [[NSURL alloc] initWithString:@"http://www.baidu.com"];
NSString *str6 = [[NSString alloc] initWithContentsOfURL:baidu encoding:NSUTF8StringEncoding error:nil];

以上的字符串创建方法大部分都有类方法,如:

// [NSString stringWithFormat:<#(NSString *), ...#>]

// [NSString stringWithUTF8String:<#(const char *)#>]

// [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>]

三、写入字符串到文件

        NSString有个对象方法 writeToFile是把字符串写入到文件里,

    NSString *str1 = @"桥";
// 将OC字符串写入到文件里,假设路径存在但文件不存在就创建文件
[str1 writeToFile:@"/Users/souhanaqiao/Desktop/wang.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];<span style="font-family: Arial;"> </span>

这种方法会在路径中创建一个wang.txt文件并把str1的字符串写入到文件里,当然还能够用url,

    // 将str1字符串写入到url中
NSURL *url = [NSURL URLWithString:@"file:///Users/souhanaqiao/Desktop/wang2.txt"];
[str1 writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3FpbnFpYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

三、NSMutableString

        NSMutableString类是NSString的子类。所以它的字符串对象的创建方法同样,当然它也有自己独有的方法。这些方法与它的可变字符串相关。以下小桥创建一个要可变的字符串:
    // 创建可变字符串
NSMutableString *str1 = [[NSMutableString alloc] initWithFormat:@"小桥正在学习OC"];

这里的可变字符串不能用
@"" 来直接创建。由于 @""创建的字符串对象是不可变的,也即是NSString类型的。既然是可变字符串,那么str1中能够添加字符串,如:

    // 拼接一个字符串到str1后面
[str1 appendString:@"今天天气不好"];

调用append方法在str1字符串的后面加上了一个字符串,那么如今str1中的字符串就为 小桥正在学习OC今天天气不好

能够拼接一个。当然也能够删除str1中的某个字符串。如:

NSRange range = [str1 rangeOfString:@"正在学习"]; // 找到 正在学习 的范围
[str1 deleteCharactersInRange:range]; // 删除正在学习

这里的NSRange是一个结构体。里面有两个成员,一个是下标一个是长度。





       


版权声明:本文博客原创文章,博客,未经同意,不得转载。

OC本学习笔记Foundation框架NSString与NSMutableString的更多相关文章

  1. Foundation框架-NSString和NSMutableString

    可变与不可变的字符串 --1-- Foundation框架介绍 1.1 框架介绍 --2-- NSString 2.1 NSString介绍及使用 2.2 NSString创建方式  2.3 从文件中 ...

  2. OC本学习笔记Foundatio框架集

        一.OC数组         OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1➣不可变数组的创建 // 创建一个不可变数组.元素为一个OC字符串对象 ...

  3. IOS开发-OC学习-Foundation框架练习

    OC语言Foundation框架中字典.字符串.数组的应用: NSString *string = @"China|Usa|France"; NSArray *array = [s ...

  4. IOS开发学习笔记016-Foundation框架

     Foundation 框架的学习 一.Foundation 常用结构体 1.NSRange(location,length)  typedef struct _NSRange { NSUIntege ...

  5. Foundation 框架 NSString常用总结

    iOS开发过程中,从始至终都会和NSString打交道,在此总结一下NSString的常用的方法,在以后的学习过程中用到的方法也会继续添加 NSString类是Foundation框架中得不可变字符串 ...

  6. OC学习13——Foundation框架中的集合

    OC集合类是一些非常有用的工具类,它可以用于存储多个数量不等的对象,并可以实现常用的数据结构(栈.队列等),此外,OC集合还可用于保存具有映射关系的关联数组.OC的集合大致可以分为:NSArray.N ...

  7. OC语言-07-OC语言-Foundation框架

    结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInteger location:表示一个元素在另一个元素中的位 ...

  8. MongoDB学习笔记~大叔框架实体更新支持N层嵌套~递归递归我爱你!

    回到目录 递归递归我爱你!只要你想做,就一定能成功! 从一到二,从二到三,它是容易的,也是没什么可搞的,或者说,它是一种流水线的方式,而从三到十,从十到百,它注定要有一个质的突破,否则,它会把你累死, ...

  9. [原创][LaTex]LaTex学习笔记之框架及宏包

    0. 简介 LaTex在书写文档时的最基本单元就是首部的写作,变相的也可以说是头文件.本文章就来总结一下文档的基本格式和常用宏包. 1. 基本单元 基本单元需要对LaTex语法有一定的了解,这个很简单 ...

随机推荐

  1. 堆栈帧的组织——C/C++内存管理必须掌握

    程序栈 说到堆栈帧,你得先说说程序栈. 记忆功能程序堆栈区是支持操作,通常共享堆. 程序栈通常占领内存区域的下部,而堆用的是上部. 程序栈存放栈帧,栈帧有时候也称为活跃记录或活跃帧.栈帧存放函数參数和 ...

  2. Windows下Putty连接虚拟机Ubuntu

    本文的题目是Windows下使用Putty连接虚拟机中的Ubuntu. 事实上针对这种一个问题,已经有非常多的文章.blog能够參考和学习.可是在本人的学习过程中还是遇到可非常多的问题. 特写下自己的 ...

  3. UVA 707 - Robbery(内存搜索)

    UVA 707 - Robbery 题目链接 题意:在一个w * h的图上.t个时刻,然后知道一些信息,每一个时刻没有小偷的矩阵位置,问哪些时刻能够唯一确定小偷位置.和确定小偷是否已经逃走,假设没逃走 ...

  4. 队列优化和斜率优化的dp

    可以用队列优化或斜率优化的dp这一类的问题为 1D/1D一类问题 即状态数是O(n),决策数也是O(n) 单调队列优化 我们来看这样一个问题:一个含有n项的数列(n<=2000000),求出每一 ...

  5. Android中目的地Intent的使用

    一.什么是Intent? Intent的中文意思是目的.在Android中也是“目的”的意思.就是我们要去哪里,从这个activity要前往另一个Activity就需要用到Intent. 示例代码一: ...

  6. 使用VBA将批量的WORD文档转换为PDF

    Sub BatchConvertToPDF() Dim destFolderPath As String destFolderPath = GetFolderPath If destFolderPat ...

  7. 初探Java8中的HashMap(转)

    HashMap是我们最常用的集合之一,同时Java8也提升了HashMap的性能.本着学习的原则,在这探讨一下HashMap. 原理 简单讲解下HashMap的原理:HashMap基于Hash算法,我 ...

  8. SharePoint 2010 新列表模板列表

    SharePoint 2010 新列表模板列表 项目描述叙事 发展环境创造了良好的名单为模板.然后使用列表模板将其复制到生产环境. 脚步 1. 打开"列表设置",找到"将 ...

  9. 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目

    原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio ...

  10. Sliverlight之 特效

    1,OpacityMask控件的部分渐隐(见Project16) (1) 控件的OpacityMask有什么作用 说明:设置所选区域不透明度的画笔,一般结合LinearGradientBrush或Ra ...