我有一个包含一些换行符的字符串,我需要将其拆分。目前我正在使用:
NSArray *a = [string componentsSeperatedByString:@"\n"];
但是,这消除了所有换行符。如何将这些元素保留为数组的一部分?
我有一个包含一些换行符的字符串,我需要将其拆分。目前我正在使用:
NSArray *a = [string componentsSeperatedByString:@"\n"];
但是,这消除了所有换行符。如何将这些元素保留为数组的一部分?
据我所知,没有 API 可以做到这一点。一个简单的解决方案是从组件开始构建第二个数组,如下所示
NSString *separator = @".";
NSArray *components = [@"ab.c.d.ef.gh" componentsSeparatedByString:separator];
NSMutableArray *finalComponents = [NSMutableArray arrayWithCapacity:components.count * 2 - 1];
[components enumerateObjectsUsingBlock:^(id component, NSUInteger idx, BOOL *stop) {
[finalComponents addObject:component];
if (idx < components.count - 1) {
[finalComponents addObject:separator];
}
}];
NSLog(@"%@", finalComponents); // => ["ab", ".", "c", ".", "d", ".", "ef", ".", "gh"]
效率不是很高,但除非处理大量组件,否则可能不是一个大问题。
自己拆分字符串。
NSMutableArray *lines = [NSMutableArray array];
NSRange searchRange = NSMakeRange(0, string.length);
while (1) {
NSRange newlineRange = [string rangeOfString:@"\n" options:NSLiteralSearch range:searchRange];
if (newlineRange.location != NSNotFound) {
NSInteger index = newlineRange.location + newlineRange.length;
NSString *line = [string substringWithRange:NSMakeRange(searchRange.location, index - searchRange.location)];
[lines addObject:line];
searchRange = NSMakeRange(index, string.length - index);
} else {
break;
}
}
NSLog(@"lines = %@", lines);