目标C:从CSV文件中读取字符串

时间:2016-03-19 15:19:23

标签: ios objective-c parsing csv nsstring

我正在解析csv文件,我有这行......

45,12,bruine verbinding,mechelse heide,bruin,"276,201,836,338,468",01050000208A7A000001000000010200000002000000443BFF11CF720D41F296072200BD0641189D9C0D026D0D417A50F15264C30641,"MULTILINESTRING((241241.883787597 186272.016616039,241056.256646373 186476.540499333))"

当我通过方法

将此字符串转换为数组时
NSArray *arrObjects=[strObjects componentsSeparatedByString:@","];

然后我得到13个对象而不是我想要8个数组对象。索引5处的对象进一步分为五个对象而不是一个对象(因为该对象在字符串中有更多的逗号(,)),索引7进一步分成两个对象。

我只想要索引5和索引7的完整字符串对象,而不是分别是五个和两个对象。我知道这是因为方法componentsSeparatedByString:@","

1 个答案:

答案 0 :(得分:1)

由于CSV标准允许逗号显示在记录中,因此您不能盲目地使用componentsSeparatedByString:@","来分隔字段。

编写一个可以将换行符,逗号和引号作为字段数据处理的CSV解析器实际上是一个相当繁琐的问题。

我建议:

指示字段的数据不包含逗号,换行符或引号(在将每个字段保存到CSV之前对每个字段进行百分比转义)

或者,如果您必须处理该格式的数据,请使用现有的CSV库。

快速Google搜索“objective-c csv解析器”会在Github上显示:

CHCSVParser

由于它声称是“适当的CSV解析器”,因此它应该处理包含逗号的字段。