我正在解析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进一步拆分为2个对象。
我只希望索引为5和索引7的完整字符串对象,而不是分别为5和2个对象。我知道这是因为方法componentsSeparatedByString:@","
。
由于CSV标准允许逗号出现在记录中,因此您不能盲目地使用它们componentsSeparatedByString:@","
来分隔字段。
编写一个可以将换行符,逗号和引号作为字段数据处理的CSV解析器实际上是一个相当棘手的问题。
我建议:
判断字段的数据中不包含逗号,换行符或引号(将每个字段保存到CSV之前将其转义的百分比)
或者,如果您必须处理这种格式的数据,请使用现有的CSV库。
Google在“ objective-c csv解析器”上进行了快速的Google搜索,结果显示在Github上:
由于它声称是“适当的CSV解析器”,因此应处理包含逗号的字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句