如何用引号中的某些项解析逗号分隔行(CSV)?

Eda*_*ame 1 java regex csv scala

我试图使用以下方法解析逗号分隔的字符串:

val array = input.split(",")
Run Code Online (Sandbox Code Playgroud)

然后我注意到一些输入行在引号内有",":

data0, "data1", data2, data3, "data4-1, data4-2, data4-3", data5
Run Code Online (Sandbox Code Playgroud)

*请注意,数据不是很干净,因此有些字段在引号内,而有些字段则没有


我如何将这条线分成:

array(0) = data0
array(1) = data1
array(2) = data2
array(3) = data3
array(4) = data4-1, data4-2, data4-3
array(5) = data5
Run Code Online (Sandbox Code Playgroud)

Sha*_*nds 5

根据我的评论:

解析CSV文件因其在引号周围的行为以及引用值中包含的逗号和引号而非常棘手.我建议拉入一个能够很好地处理所有边缘情况的库.

您可以考虑的选项包括scala-csvtraversable-csv.或者使用像opencsv这样的Java库.

否则,如果您不想或不能使用库,您可以查看此SO答案此SO答案,以了解其他人如何处理自己的CSV解析器.