gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:25:06 26 4
gpt4 key购买 nike

我正在使用 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;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]

数组看起来像这样:

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 直接拆分为以分号分隔的字段,并且您不需要进行额外的拆分?这也将解决您的逗号问题。

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

Value 1; "Value;2"

使用您的方法您将获得 3 个值。

要获得有关 CSVReader 的更多建议,请添加您正在使用的信息(通过指明其包)。

关于Java - CSVReader 在值中用逗号正确分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46395034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com