有没有适用于iOS的好的CSV解析器?

3
我有一个包含产品详细信息及其价格的csv文件。我需要解析这个csv文件以执行一些搜索查询。
是的,我尝试过https://github.com/ha-minh-vuong/CSVParser,但是当解析产品价格时,这个库会失败,因为在我的CSV中,产品价格包含逗号。

"12,500.00"

P.S:行分隔符必须是逗号,因为我直接从客户端获取CSV文件。我无法更改任何内容。
更新:
样例行
DSK0009,HL,0.02,HQ,F,AI2,-,-,-,-,粉色,-,-,“12,500.00”,“1,150.00”

这将是一个棘手的问题。您能否粘贴一整行数据示例,以供解析?每个数据列都由双引号括起来并用逗号分隔吗? - TorukMakto
@Bugivore,感谢您的回复。我已经在我的问题中更新了一个示例行。 - Thilina Chamath Hewagama
@ThilinaCháminHewagama 请要求您的客户将分隔符从逗号(,)更改为其他任何字符,例如Pie(|)或tsv表示(制表符分隔值)等。 - Pradhyuman sinh
@Thilina - 让我测试一段代码,然后回来。 - TorukMakto
@Thilina - 我有一段简单的代码可以处理解析,而不是依赖第三方库。不幸的是,我无法添加答案,可能是因为您已经接受了答案或问题已被搁置... - TorukMakto
2个回答

14

谢谢您的答复,我会尝试这个方法并告诉您结果。 - Thilina Chamath Hewagama
1
就像我说的,这是一个非常受欢迎的库。每个人都喜欢它,Dave 做得很好。 - uchuugaka
1
Dave 写的东西非常好,绝对没错。作为感谢,请继续支持他的回答并点赞(它们通常都很有价值)。 - Scott Corscadden

0

你可以使用正则表达式模式

NSString *source = @"DSK0009, HL , 0.02 , HQ , F , AI2 ,-,-,-,-,Pink,-,-,\"12,500.00\",\"1,150.00\"";
NSString *pattern = @"(?:^|,)\"?((?<=\")[^\"]*|[^,\"]*)\"?(?=,|$)";
NSRegularExpression *nameExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionAllowCommentsAndWhitespace error:nil];
NSArray *matches = [nameExpression matchesInString:source
                                           options:0
                                             range:NSMakeRange(0, [source length])];
for (NSTextCheckingResult *match in matches) {
    NSRange matchRange = [match rangeAtIndex:1];
    NSString *matchString = [source substringWithRange:matchRange];
    NSLog(@"%@", matchString);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接