NSString篇

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];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。