NSString是一个Unicode编码,16位字符的字符序列。
NSString继承于NSObject,引用类型,拷贝时具有引用语义。
初始化方法
- 字面常量初始化
NSString* s1 = @"hello world"; - 初始化器方法
NSString *str2 = [[NSString alloc]initWithCString:"Hello World!" encoding:NSUTF8StringEncoding]; - 工厂方法
NSString *str3 = [NSString stringWithCString:"Hello World!" encoding:NSUTF8StringEncoding];
NSString拥有恒定性,所有的操作无法更改字符串本身,如有更改都是以返回新值的方式实现的。同时,NSString拥有共享机制,ARC对其有特殊的管理规则。
NSString常用操作
str1 = str1.uppercaseString;//大写
str1 = str1.lowercaseString;//小写
str1 = str1.capitalizedString;//首字母大写
//搜索方法,判断是否存在Hello
NSRange range = [str1 rangeOfString:@"Hello"];
NSLog(@"location: %lu, length:%lu",range.location,range.length);
//字符串截取
NSString* substr = [str1 substringFromIndex:6];
//是否以Hello为前缀
BOOL yOrN = [str1 hasPrefix:@"Hello"];
// 格式化字符串
NSString* format=[NSString stringWithFormat:@"[%d, %d]",100,200];
NSMutableString,可变字符串相较于NSString具有可变性。NSMutableString是NSString的子类。
工厂初始化
NSMutableString *mustr1 = [NSMutableString stringWithString: @"Hello,World!"];常用方法
//合理指定capacity可以有效提高效率
NSMutableString *mustr3 =[NSMutableString stringWithCapacity:100];
//追加字符串
[mustr3 appendString:@"Hello Objective"];
//插入字符串
[mustr3 insertString:@"-C" atIndex:mustr3.length];
//更改
[mustr3 setString:@"Hi Objective"];
//替换
NSRange replaceRange = NSMakeRange(0, 2);
[mustr3 replaceCharactersInRange:replaceRange withString:@"Hello"];
//删除
NSRange deleteRange = NSMakeRange(5, 10);
[mustr3 deleteCharactersInRange:deleteRange];