在iOS / OSX上读取带有windows和unix行结尾的文件

时间:2014-07-08 08:34:23

标签: ios macos unix text-files line-endings

我有这些行来读取文件并将其行拆分为数组项:

- (NSArray *)lerLinhasArquivoBundle:(NSString *)nomeArquivo {

    NSString *arquivo = nil;
    NSError *error = nil;

    NSString *bd = [[NSBundle mainBundle] pathForResource:nomeArquivo ofType:@"csv"];

    if (bd) {
        arquivo = [NSString stringWithContentsOfFile:bd
                                            encoding:NSUTF8StringEncoding
                                               error:&error];
    }

    if (error || !bd) {
        return nil;
    }

    return [arquivo componentsSeparatedByString: @"\r\n"];
}

问题是这只适用于有" windows" CR / LF结尾并且对于具有UNIX行结尾的文件将失败。当文件是UNIX文件时,我只得到一个大项目。

好的,我可以破解方法来测试\r\n\n并使用那个给我更多项目的方法,但这似乎是一个蹩脚的解决方案。

有没有办法知道正在使用哪些行结尾,并在返回行上使用该信息将元素拆分为数组?

1 个答案:

答案 0 :(得分:3)

使用[NSCharacterSet newlineCharacterSet]而不是显式字符串:

return  [arquivo componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];