解析逗号分隔列表的最佳方法
Posted
技术标签:
【中文标题】解析逗号分隔列表的最佳方法【英文标题】:Best way to parse comma separated list 【发布时间】:2014-03-21 22:38:35 【问题描述】:我正在接收来自与我通信的服务器的 JSON 数据包,我返回的请求之一在 JSON 数组中有一个返回的项目,它是一个逗号分隔的字符串。
当我 NSLog 将 JSON 数据包作为数组记录时,它看起来像这样。
(
"\"Completed\",\"UnCompleted Value\",\"Damaged Value\"",
"",
0
)
我可以像这样访问 JSON 数组的第一项
NSString *firstJSONString = [jsonArray objectAtIndex:0];
然后我想以最好/最有效的方式解析它,因为我要将值存储到 coredata 对象中。
所以我的问题是如何解析这个逗号分隔的字符串?
【问题讨论】:
引用的值可以有逗号吗? 是的......显然,如果引号内有类似的内容,它将在其周围加上引号。 然后对解析 CSV 文件进行一些搜索。您将需要做同样的事情 - 处理可能在值中的引号和逗号。 github上有一个流行的CSV parer。 这太奇怪了——有点像 JSON 数组在途中被盗了。您可以使用[]
包装字符串并通过 JSON 反序列化发送,但如果没有其他复杂情况,那么 componentsSeparatedByString 可能是最简单的。
好的,然后去查找 csv 解析器.. 谢谢
【参考方案1】:
NSArray *items = [firstJSONString componentsSeparatedByString:@","];
或
NSArray *items = [firstJSONString componentsSeparatedByString:@"\",\""];
然后从第一项中删除\"
,在最后一项中删除\"
【讨论】:
这仅适用于引用的值中不能包含逗号的情况。 @rmaddy 是正确的,因为这将是我的第一个解决方案。但是我忘了把它写进我的问题中。对此感到抱歉。0
不是字符串的一部分——它是“真实”数组中的一个单独元素,最终的 ""
也是如此。
这样第二个例子会从字符串引号内删除所有引号?以上是关于解析逗号分隔列表的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
解析以逗号分隔的std :: string [duplicate]
在PHP中将字符串[基本上是逗号分隔的数字]转换为整数的最佳方法[重复]