我使用以下方法将CSV文件读入数组:
NSString *theWholeTable = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"example" ofType:@"csv"]
encoding:NSUTF8StringEncoding
error:NULL];
NSArray *tableRows = [theWholeTable componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
数组中的每个第二个对象都是空的,知道为什么?
CSV文件数据如下所示: 10,156,326,614,1261,1890,3639,5800,10253,20914 20,107,224,422,867,1299,2501,3986,7047,14374
10和20是每个新行的开头。
提前感谢。
修改 的 我尝试使用以下代码:
NSArray *tableRows = [theWholeTable componentsSeparatedByString:@"\n"];
这也是我想要的方式。
虽然我仍然不确定为什么newlineCharacterSet创建了空对象......
答案 0 :(得分:9)
如果您的CSV
文件来自非UNIX系统,则它可能包含多个行分隔符(例如\r\n
而不是\n
)。在这种情况下,componentsSeparatedByCharactersInSet
会在\r
和\n
之间为空字符序列插入空字符串。
您可以使用以下方法从NSArray
删除空字符串:
tableRows = [tableRows filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];
答案 1 :(得分:1)
解决这个问题,我用其他方法:
NSArray *tableRows = [theWholeTable componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n"]]
所以你不需要删除任何行。