NSString
注:NSString类的对象是不可变的,就是说,一个字符串一旦被创建,就不可再次改变它的内容。默认使用UTF-16编码。
字符串的创建
- @”“
// 最简单的就是这个啦。
NSString *str = @"This is a string."
- stringWithFormat:
// 根据后面的格式化串进行初始化。格式化串和NSLog方法的参数一样。
NSString *str = [NSString stringWithFormat: @"%d,%f,%@", 1, 2, @"哈哈"];
- stringWithCString:encoding:
// 按照指定编码从C语言类型的字符串获取NSString
NSString *str = [NSString stringWithFormat: @"%d,%f,%@", 1, 2, @"哈哈"];
- stringWithContentsOfFile:encoding:error:
// 第一个/不可少
NSString *path = @"/Users/hskj/names.txt";
// 从文件中获取字符串 error
NSString *str = [NSString stringWithContentsOfFile: path
encoding: NSUTF8StringEncoding
error: nil];
- stringWithContentsOfURL:encoding:error:
// url统一资源定位符 file://代表本地文件
NSURL *url = [NSURL URLWithString:@"file:///Users/hskj/names.txt"];
// 从URL中获取字符串
NSString *str = [NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:nil];
字符串的持久化
- writeToFile:atomically:encoding:error:
[@"123456" writeToFile:@"/Users/hskj/namesCopy.txt" // 写入的路径
atomically:YES // 是否是原子化,原子化可以在写入异常时不创建文件
encoding:NSUTF8StringEncoding // 编码方式
error:nil]; // 错误信息
- writeToURL:atomically:encoding:error:
NSURL *url = [NSURL URLWithString:@"file:///Users/hskj/nameCopy.txt"];
[@"123456" writeToURL:url // 写入的路径
atomically:YES // 是否是原子化,原子化可以在写入异常时不创建文件
encoding:NSUTF8StringEncoding // 编码方式
error:nil]; // 错误信息
长度相关
- length
// 只读属性。获取字符个数,
NSLog(@"%lu", @"字符串".length); // 3
// strlen("字符串"); // 输出可不是3
- lengthOfBytesUsingEncoding:
// 字符个数,3
NSLog(@"%lu", @"字符串".length);
// 字节数,9
NSLog(@"%lu", [@"字符串" lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
读取内容
- characterAtIndex:
// 获取指定索引的字符
NSLog(@"%c", [@"123" characterAtIndex:0]);
- hasPrefix: / hasSuffix:
// 判断是否以给定字符开始
NSLog(@"%i", [@"123456" hasPrefix: @"123"]);
// 判断是否以给定字符结尾
NSLog(@"%i", [@"123456" hasSuffix: @"456"]);
- rangeOfString:
// 获取给定字符串的范围
NSRange range = [@"123456" rangeOfString:@"123"];
比较
- ==
比较两个字符串的地址是否相同 - isEqualToString:
NSString *s1 = @"123456";
NSString *s2 = @"1234567";
// 比较内容是否相同
NSLog(@"%i", [s1 isEqualToString: s2]);
- compare: options:
NSString *s1 = @"123456";
NSString *s2 = @"1234567";
// 根据比较参数进行比较
NSComparisonResult result = [s1 compare:s2 options: NSCaseInsensitiveSearch];
NSString *s1 = @"123456";
NSString *s2 = @"1234567";
// 根据比较参数进行比较
NSComparisonResult result = [s1 compare:s2 options: NSCaseInsensitiveSearch];
/*
比较结果:
enum {
NSOrderedAscending = -1, // 升序排列
NSOrderedSame, // 相同
NSOrderedDescending // 降序排列
};
typedef NSInteger NSComparisonResult;
比较选项:
typedef enum NSStringCompareOptions : NSUInteger {
NSCaseInsensitiveSearch = 1, // 忽略大小写
NSLiteralSearch = 2, // 逐字比较,类似strcmp
NSBackwardsSearch = 4, // 倒叙比较
NSAnchoredSearch = 8,
NSNumericSearch = 64,
NSDiacriticInsensitiveSearch = 128,
NSWidthInsensitiveSearch = 256,
NSForcedOrderingSearch = 512,
NSRegularExpressionSearch = 1024
} NSStringCompareOptions;
多个选项同时使用 , | 分隔。如:NSCaseInsensitiveSearch | NSLiteralSearch
*/
截取
NSString *str = @"123456789";
// 从给定索引截取到最后
NSLog(@"%@", [str substringFromIndex: 2]); // 3456789
// 从开始到给定索引
NSLog(@"%@", [str substringToIndex: 2]); // 12
// 截取指定范围
NSLog(@"%@", [str substringWithRange: NSMakeRange(0, 3)]); // 123