Objective-C基础笔记(8)Foundation常用类NSString
2014-11-19 22:50
316 查看
一、创建字符串的方法
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都可以使用。
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
- Objective-C基础笔记(9)Foundation常用类NSArray
- Objective-C基础笔记(8)Foundation经常使用类NSString
- Objective-C基础笔记(9)Foundation常用类NSArray
- 【Foundation学习笔记】常用类--NSString和NSMutableString
- Objective-C基础学习笔记(九)-Foundation
- Objective-C基础教程学习笔记(八)Foundation Kit快速教程
- Objective-C基础笔记(7)Foundation中的常用结构体
- Objective-C基础学习笔记(九)-Foundation
- Programming in Objective-C 学习笔记07——Foundation框架基础01
- Objective-C:Foundation框架-常用类-NSString全解
- Objective-C基础教程(第一版)-学习笔记第八章Foundation Kit快速教程
- Objective-C基础笔记(7)Foundation中的常用结构体
- Objective-C基础教程学习笔记(十)对象初始化
- Objective-C基础教程学习笔记(九)内存管理
- Objective-C基础教程学习笔记(十五)文件加载与保存
- Objective-C基础教程学习笔记(十三)协议
- Objective-C基础教程学习笔记(十二)类别
- Objective-C基础教程四(Foundation Kit)
- Objective-C基础教程学习笔记(七)Xcode快捷健