1.常量字符串与堆字符串
- 常量区中的字符串只要内容一致, 不会重复创建,与C语言中的一致
//c中
char *str = @"aaa";
//oc中
NSString *str1 = @"sj";
- 堆中字符串对象
NSString *str = [NSString stringWithFormat:@"ls"];
2.字符串的常用方法以及作用
- stringWithContentsOfFile:
/*
作用:从给定路径的文件中读取字符串
注意:在OC方法中但凡看到XXXofFile的方法, 传递的一定是全路径(绝对路径)
*/
NSError *error = nil;
NSString *str1 = [NSString stringWithContentsOfFile:@"全路径" encoding:NSUTF8StringEncoding error:&error];
- writeToFile:
/*
作用:将字符串写入到指定文件
*/
BOOL flag = [str writeToFile:@"全路径" atomically:YES encoding:NSUTF8StringEncoding error:nil];
- stringByAddingPercentEscapesUsingEncoding:
/*
作用:对字符串中的中文进行处理,一般用在URL中存在中文的情况下
*/
NSString *path = @"file:///Users/chuanglian/Desktop/未命名文件夹/sj.txt";
path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- NSURL中的URLWithString: 与fileURLWithPath:
/*
注意:如果加载的资源是本机上的资源,那么URL中的主机地址可以省略
虽然主机地址可以省略,但是需要注意,文件路劲中最前面的/不能省略,文件路径最前面的/代表根路径
*/
// NSString *path = @"file://192.168.199.199/Users/chuanglian/Desktop/sj.txt";
NSString *path = @"file:///Users/chuanglian/Desktop/sj.txt";
NSURL *url = [NSURL URLWithString:path];
/*
注意:如果是通过NSURL的fileURLWithPath:方法创建URL,那么系统会自动给我们传入的字符串添加协议头(file://),所以字符串中不需要再写file://
注意:开发中一 般情况下,如果是访问本机的资源,创建URL的时候,建议使用fileURLWithPath方法创建
因为url不支持中文,如果URL中包含中文,那么无法访问;但是如果是通过fileURLWithString方法创建URL,哪怕URL中包含中文也可以进行访问,系统内部会自动对URL中包含的中文进行处理
*/
NSString *path = @"/Users/chuanglian/Desktop/sj.txt";
NSURL *url = [NSURL fileURLWithPath:path];
- stringByAppendingPathComponent:
/*
作用:给文件路径添加一个目录
注意: 如果路径后面已经有了/, 那么就不会添加了
如果路径后面有多个/, 那么会自动删除多余的/, 只保留一个
*/
NSString *str = @"/User/chuanglian/Desktop/abc";
NSString *newStr = [str stringByAppendingPathComponent:@"sj.txt"];
/User/chuanglian/Desktop/abc/sj.txt
3.补充
C字符串与OC字符串的相互转换
char *cStr = "sj";
NSString *str = [NSString stringWithUTF8String:cStr];
NSLog(@"str = %@", str);
NSString *newStr = @"sj";
const char *cStr2 = [newStr UTF8String];
网友评论