csv|导入csv文件时,如果最后一列没有数据,读取出来的集合比抬头字段少,和数据中包含","如何处理?

当时项目是需要导入csv文件进行处理后存入数据库持久化,在读取一行数据时,遇到了如下两个问题:
1, 因为csv文件每列数据读取出来后是一串由","号分隔的字符串,所以想将字符串变为数组(集合)时用.split(",")进行分隔,但发现一个问题,原始数据中,如果存在","时,原本一条数据就会被分隔成两条,从而出现错误.解决办法是使用.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)").这样我理解的是,使用了正则的原理来匹配,使在""中的","不被识别为分隔的",",从而不会进行错误的分隔.






【csv|导入csv文件时,如果最后一列没有数据,读取出来的集合比抬头字段少,和数据中包含","如何处理?】



2,csv文件最有一列如果没有数据,读取出来的一行数据可能是这样"A,B,C, "但使用.split时,它会自动把最后的一个空数据处理了,转换为数组后为[A,B,C],所以可以使用.split(",",-1),这样就可以把最后一个空字符也识别出来,数组为[A,B,C, ]

    推荐阅读