OC本学习笔记Foundation框架NSString与NSMutableString
一、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中的内容了,能够看下载图:
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];
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是一个结构体。里面有两个成员,一个是下标一个是长度。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
转载于:https://www.cnblogs.com/mfrbuaa/p/4723839.html
OC本学习笔记Foundation框架NSString与NSMutableString相关推荐
- IOS学习笔记十六(NSString和NSMutableString)
1.NSString和NSMutableString NSString是不变字符串类,有点像java里面的String,NSMutableString是可变字符串类,有点类似java里面的String ...
- OC本学习笔记Foundatio框架集
一.OC数组 OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1➣不可变数组的创建 // 创建一个不可变数组.元素为一个OC字符 ...
- 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)
开源鸿蒙南向嵌入学习笔记--NAPI框架学习(一) 前言--系列介绍 本系列文章主要是记录笔者在鸿蒙南向的学习与工作中的知识点笔记记录,其中不止会针对鸿蒙中的学习问题进行思考与记录,也会对涉及到的一些 ...
- 免费学习机器学习和深度学习的源码、学习笔记和框架分享
机器学习和深度学习的免费学习源码.学习笔记和框架分享 python笔记 源码 python导入模块的的几种方式 在python中,字典按值排序 python中set的基本常用方法 python取出fr ...
- [OC学习笔记]系统框架
一.熟悉系统框架 编写OC应用程序时几乎都会用到系统框架,其中提供了许多编程中经常使用的类,比如collection.若是不了解系统框架所提供的内容,那么就可能会把其中已经实现过的东西又重写一遍.用户 ...
- Objective-C学习笔记2013[NSString]字符串[可变字符串中,加用app减用delete]
Objective-C学习笔记 小常识: NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT. @是Cocoa元素的前缀,很多地方我们会看到,比如接下来... ...
- IOS学习---OC基础学习(Foundation)
Foundation框架: 包含许多常见的数据类型 是其他所有Ios框架的基础结构体: NSRange: 范围:成员变量有location(位置).length(长度) @"i love o ...
- HaaS学习笔记 | HaaS框架环境下基于MicroPython的LED跑马灯实现及比较
[1]题目要求 [案例]:在HaaS框架下用原生MicroPython实现LED跑马灯. 蓝蜻蜓ESP32开发板的LED灯电路连接如下: D3灯----GPIO14,高电 ...
- 关于oc的学习笔记 -copy和mutableCopy
简单点来说的话copy就是复制一个不可以变的类型,mutableCopy复制一个可变的对象 举例子 NSString *str = @"fikk"; NSMutableString ...
最新文章
- 【转】Android下编译jni库的二种方法(含示例) -- 不错
- 技术图文:Matlab VS. Numpy 矩阵基本运算
- js之浅拷贝和深拷贝
- 东田纳西州立大学计算机排名,2019东田纳西州立大学世界排名
- windows 10 64位机器上 安装部署
- os.clock()导致的bug
- Could not autowire field: private javax.servlet.http.HttpServletRequest
- 深入理解多线程(五)—— Java虚拟机的锁优化技术
- 基于easypoi实现自定义模板导出excel
- 前端捕捉轨迹_基于JavaScript实现每日签到打卡轨迹功能
- jmeter录制 过滤_jmeter脚本录制方法:
- CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析
- 图片去底色功能怎么用?怎么把图片背景色变成透明的?
- Pytorch 小白记事本 1
- rocketmq初学者入门
- SQL语句--简单的函数书写举例(1)
- 创业布局移动端App,应该先做Android还是iOS?
- 线性回归 假设_违反线性回归假设的后果
- STM32版CCD线性摄像头寻线寻迹小车
- 【香蕉OI】GCD 和 LCM (莫比乌斯反演)
热门文章
- cshtml中引用css_css基础必备-使用样式,前端小白一看就会
- 一文掌握 C 智能指针的使用
- 东华大学计算机学院讲座单,计信学院成功举办2018级专业导师面对面系列讲座活动...
- 山东省102021年普通高考成绩查询,山东高考成绩今日发布!成绩查询看这里!
- jsp标签 判断 余数_舟山铝箔纸不干胶标签制作-雷宝实业
- 什么是工业光纤收发器,工业收发器的作用是什么?
- rs-485光端机的使用你真的清楚吗?
- 光端机图像出现噪点或者数据有时不通的情况
- [渝粤教育] 郑州升达经贸管理学院 大学英语混合式课程 参考 资料
- 天线的安装对通信效果有什么影响?