一、 NSString(不可变字符串)
1、字符串的创建
每一个对象方法都有对应的类方法,使用类方法不需要管理内存。
// 这种方式创建出来的字符串是字符串常量,不需要管理内存
(1)NSString *str1 = @"jack";
(2)NSString *str2 = [[NSString alloc] init];
str2 = @"jack";
(3)NSString *str3 = [[NSString alloc] initWithString:@"jack"];
NSString *str3 = [NSString stringWithString:@"jack"];
(4)NSString *str4 = [[NSString alloc] initWithFormat:@"age is %d", 10];
NSString *str4 = [NSString stringWithFormat:@"age is %d", 10];
(5)// C字符串转 OC字符串
NSString *str5 = [[NSString alloc] initWithUTF8String:"jack"];
NSString *str5 = [NSString stringWithUTF8String:"jack"];
// OC字符串转 C字符串
const char *c = [str5 UTF8String];
(6)// 从文件中读取字符串
// 只要用到中文编码,就写NSUTF8StringEncoding
NSString *str6 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
NSString *str6 = [NSString stringWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
(7)// 从路径中读取字符串
// URL:资源路径
// 协议头://路径
// file://
// ftp://
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/1.txt"];
NSString *str7 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSString *str7 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
2、把字符串输出到文件
NSString *str = @"jack\njack";
[str writeToFile:@"/Users/apple/Desktop/My" atomically:YES encoding:NSUTF8StringEncoding error:nil];
二、NSMutableString(可变字符串)
1、@interface NSMutableString : NSString
继承自NSString,所以之前NSString中的创建方法,它都可以使用
2、NSMutableString基本使用
(1)字符串增加
NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
// 拼接内容在s1后面
[s1 appendString:@",good!"];
(2)字符串删除
// 删除 is
[s1 deleteCharactersInRange:NSMakeRange(7, 2)];
// 上面方法的缺点是,如果is变换了位置就无法删除了
// 先确定is的范围,然后再删除
NSRange range = [s1 rangeOfString:@"is"];
[s1 deleteCharactersInRange:range];
3、补充:NSString在原来字符串基础上新建字符串
NSString *s2 = [NSString stringWithFormat:@"my age is 11"];
// 在不可变字符串的基础上添加新的字符串创建新的字符串
NSString *s3 = [s2 stringByAppendingString:@",my name is jack."];