一、创建字符串的方法

void stringCreate(){
//方法1
NSString *str1 = @"A String!";
//方法2
NSString *str2 = [[[NSString alloc] init] autorelease];
str2 = @"A String!";
[str2 release];
//方法3
NSString *str3 = [[NSString alloc] initWithString:@"A String!"];
[str3 release];
//释放内存后 str3指向新内存
str3 = [NSString stringWithString:@"A String!"];
//方法4
NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];
[str4 release];
//方法5
NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
[str5 release];
//str5指向新内存
str5 = [NSString stringWithFormat:@"My age is %i and height is %.2", 19, 1.55f];
}

这里须要注意的是

1、在指向新内存的时候要确保原来指向的内存释放。
2、使用静态方法创建字符串对象后系统会自己主动释放内存。不要再次释放。否则会发生野指针错误。

二、读取文件内容到字符串

    //从文件读取字符串,并使用UTF-8编码
NSError *error;
NSString *path = @"/user/apple/Desktop/test.txt";
NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
if(error){
NSLog(@"读取文件失败");
}else{
NSLog(@"读取文件成功");
}

这里须要注意的是传入error的时候须要传入error的地址。

如上图所看到的,假如我们如今定义了一个变量a   (int a = 123) 在内存中的结构如图。我们要改变变量a的值,就是通过找到该地址然后给该地址所指向的内存赋值。基于这个我们要获取错误信息,就须要传递error的地址。

三、读取URL内容到字符串

    NSString *str2 = [NSString stringWithContentsOfURL:@"file:///user/apple/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&error];

    NSString *str3 = [NSString stringWithContentsOfURL:@"http://www.baidu.com" encoding:NSUTF8StringEncoding error:&error];

四、字符串导出

#pragma mark 字符串的导出
void stringExport(){
NSError *error;
NSString *str = @"dfdfddfdfdfd";
NSString *path = @"/user/apple/Desktop/test.txt";
//YES代表要进行原子性操作,也就是会创建一个中间暂时文件
//假设文件不存在会自己主动创建
[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error]; if (error) {
NSLog(@"写入失败:%@", [error localizedDescription]);
} else {
NSLog(@"导入成功!");
}
}

须要注意的是

1、假设写入的文件不存在则会自己主动创建

2、假设目录不存在。或者路径错误则会出错

3、atomically代表原子性。假设设为YES就会将字符串先所有写入暂时文件。最后所有写入目标文件。能够防止文件写入中断错误。

五、可变字符串

NSString和Java中的String相似,以下介绍一个NSMutableString可变长字符串

#pragma mark 可变字符串的创建
void mutableStringCreate(){
//预先分配10个字数的存储空间
NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];
//设置字符串内容
[str setString:@"1234"];
//拼接一个字符串
[str appendString:@"567"]; [str appendFormat:@"age is %i", 27];
//替换字符串
NSRange range = [str rangeOfString:@"age"]; //获取位置
[str replaceCharactersInRange:range withString:@"number"];
//插入字符串
[str insertString:@"abc" atIndex:2]; //12abc34....
//删除字符串
[str deleteCharactersInRange:[range]; [str release];
}

NSMutableString是NSString的子类,所以NSString的非私有方法NSMutableString都能够使用。

Objective-C基础笔记(8)Foundation经常使用类NSString的更多相关文章

  1. Objective-C:Foundation框架-常用类-NSString全解

    Foundation框架中常用的类有字符串.集合.字典等,这里介绍字符串NSString.本文分别介绍了NSString的创建.从文件里读取NSString字符串.通过函数改变外部的NSString变 ...

  2. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  3. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  4. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  5. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  6. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  7. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  8. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  9. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

随机推荐

  1. 8.Maven之(八)约定优于配置

    转自:“https://blog.csdn.net/qq_25460531/article/details/79423961” maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的 ...

  2. CISP/CISA 每日一题 21

    CISSP 每日一题(答)What is the term that identifies data ona disk after the data has supposedly been erase ...

  3. map按value查找相应元素

    find_if算法用来在map中查找value符合条件的pair元素,返回指向该符合条件元素的迭代器,如果找到,那么返回最后一个元素的后一个元素end(); 1.首先要定义头文件 #include & ...

  4. Java Servlet学习笔记(四)Servlet客户端Http请求

    Servlet 客户端 HTTP 请求 当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的.您可以查看 HTTP ...

  5. linux下加入用户并赋予root权限

    1.加入用户.首先用adduser命令加入一个普通用户,命令例如以下: #adduser tommy //加入一个名为tommy的用户 #passwd tommy   //改动password Cha ...

  6. 一起talk C栗子吧(第九十八回:C语言实例--使用消息队列进行进程间通信二)

    各位看官们,大家好,上一回中咱们说的是使用消息队列进行进程间通信的样例.这一回咱们接着上一回的内容继续说使用消息队列进行进程间通信.闲话休提.言归正转.让我们一起talk C栗子吧! 我们在上一回中介 ...

  7. Rdis-主从复制

    配置 配置一个从服务器非常简单, 只要在配置文件中增加以下的这一行就可以了: slaveof 192.168.1.1 6379 注:主:bind 192.168.10.1 (指定主机IP) 当然, 你 ...

  8. Python的主成分分析PCA算法

    这篇文章很不错:https://blog.csdn.net/u013082989/article/details/53792010 为什么数据处理之前要进行归一化???(这个一直不明白) 这个也很不错 ...

  9. js日期常用方法

    js获取日期时间格式 export function formatDateTime(timeStamp) { var date = new Date(); date.setTime(timeStamp ...

  10. C#集合类:动态数组、队列、栈、哈希表、字典

    1.动态数组:ArrayList 主要方法:Add.AddRange.RemoveAt.Remove 2.队列:Queue 主要方法:Enqueue入队列.Dequeue出队列.Peek返回Queue ...