我正在解析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:@","
。
答案 0 :(得分:1)
由于CSV标准允许逗号显示在记录中,因此您不能盲目地使用componentsSeparatedByString:@","
来分隔字段。
编写一个可以将换行符,逗号和引号作为字段数据处理的CSV解析器实际上是一个相当繁琐的问题。
我建议:
指示字段的数据不包含逗号,换行符或引号(在将每个字段保存到CSV之前对每个字段进行百分比转义)
或者,如果您必须处理该格式的数据,请使用现有的CSV库。
快速Google搜索“objective-c csv解析器”会在Github上显示:
由于它声称是“适当的CSV解析器”,因此它应该处理包含逗号的字段。