0

我有一个包含一些换行符的字符串,我需要将其拆分。目前我正在使用:

NSArray *a = [string componentsSeperatedByString:@"\n"];

但是,这消除了所有换行符。如何将这些元素保留为数组的一部分?

4

2 回答 2

0

据我所知,没有 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"] 

效率不是很高,但除非处理大量组件,否则可能不是一个大问题。

于 2013-11-07T22:01:56.517 回答
0

自己拆分字符串。

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);
于 2013-11-07T22:02:04.343 回答