Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-CSVReader在值中使用逗号正确拆分_Java_Arrays_Csv_Split - Fatal编程技术网

Java-CSVReader在值中使用逗号正确拆分

Java-CSVReader在值中使用逗号正确拆分,java,arrays,csv,split,Java,Arrays,Csv,Split,我正在使用CSVReader读取java中的csv文件。它是“工作”的,但当我尝试将行拆分为字符串数组时,我发现了一个小问题,如下所示: reader = new CSVReader(new FileReader(csvFile)); line = reader.readNext() String[] lineDetail = line[0].split(";", -1); ABEL MESQUITA JR.;178957;1;2015;RR;DEM;55;3;COMBUSTÍVEIS E L

我正在使用CSVReader读取java中的csv文件。它是“工作”的,但当我尝试将行拆分为字符串数组时,我发现了一个小问题,如下所示:

reader = new CSVReader(new FileReader(csvFile));
line = reader.readNext()
String[] lineDetail = line[0].split(";", -1);
ABEL MESQUITA JR.;178957;1;2015;RR;DEM;55;3;COMBUSTÍVEIS E LUBRIFICANTES.;1;Veículos Automotores;B.B. PETROLEO LTDA;03625917000170;4339;0;2017-01-31 00:00:00;4007

06;0;4007

06;1;2017;0;;;1354058;5711;0;3074;6196889
这是我的问题:下面的行正确工作:

[ABEL MESQUITA JR.;178957;1;2015;RR;DEM;55;1;MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR;0;;WM PAPELARIA E ESCRITÓRIO;12132854000100;3592;0;2017-04-26 00:00:00;296;0;296;4;2017;0;;;1377952;5828;0;3074;6266962]
但当我尝试使用CSVReader读取时,下面的一行会产生3个字符串数组:

[ABEL MESQUITA JR.;178957;1;2015;RR;DEM;55;3;COMBUSTÍVEIS E LUBRIFICANTES.;1;Veículos Automotores;B.B. PETROLEO LTDA;03625917000170;4339;0;2017-01-31 00:00:00;4007, 06;0;4007, 06;1;2017;0;;;1354058;5711;0;3074;6196889]
阵列如下所示:

reader = new CSVReader(new FileReader(csvFile));
line = reader.readNext()
String[] lineDetail = line[0].split(";", -1);
ABEL MESQUITA JR.;178957;1;2015;RR;DEM;55;3;COMBUSTÍVEIS E LUBRIFICANTES.;1;Veículos Automotores;B.B. PETROLEO LTDA;03625917000170;4339;0;2017-01-31 00:00:00;4007

06;0;4007

06;1;2017;0;;;1354058;5711;0;3074;6196889
我认为问题在于这个值:4007,06,因为第一行中的值是一个整数296

有人知道如何使CSVReader只返回一个数组,而不是3个数组吗

提前谢谢

编辑1


我需要的结果是将第二个和第三个数组与第一个数组连接起来。因此,我将把4007,06放在一起,而不是分开。

您的CSV数据行使用逗号分割,逗号是默认的CSV字段分隔符

为了避免使用逗号分割,在读取CSV文件之前,请初始化CSV读取器,以使用一些未使用的字符(例如Tab)作为CSV字段分隔符这样,您每行将获得一个字段。但您的期望似乎毫无意义,因为通常应该有更简单的方法:

为什么不将CSV字段分隔符配置为
这样它会将您的CSV直接拆分为分号分隔的字段
,您就不需要再进行拆分了?这也将解决您使用逗号的问题

您的
行[0]。拆分(“;”,-1)
基本上是一个错误,因为它无法将此有效的CSV拆分为2个值:

Value 1; "Value;2"
使用您的方法,您将得到3个值


要获得有关
CSVReader
的进一步建议,请添加您正在使用的信息(通过显示其软件包)。

您在哪里使用
CSVReader
?看起来您只是在使用
String.split
。我将编辑并添加代码。@AndyTurner我已经编辑过了。但老实说,我认为问题在于拆分呼叫,CSVReader正在正确地返回线路guess@AndyTurner事实上,我一直在寻找,问题肯定出在CSVReader上,因为我提到的这3个数组是调用readNext()时得到的行值