【问题标题】:Reading files with windows and unix line endings on iOS/OSX在 iOS/OSX 上读取带有 windows 和 unix 行尾的文件
【发布时间】:2014-07-08 08:34:23
【问题描述】:

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

- (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 的方法,并使用可以在数组上提供更多项目的方法,但这似乎是一个蹩脚的解决方案。

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

【问题讨论】:

  • return [arquivo componentsSeparatedByCharactersInSet:NSCharacterSet newlineCharacterSet]]; 是做什么的?
  • 啊哈!!!就是这样。请将此推荐添加为答案!谢谢

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


【解决方案1】:

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

return  [arquivo componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

【讨论】:

    猜你喜欢
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2018-09-07
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多