gpt4 book ai didi

java - 在 Java 中解析 csv 文件时遇到问题

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

我正在尝试解析 csv 文件( Assets 负债表)的文件夹,并且一切顺利,直到我尝试将行名称与值分开。

看起来上一行的最后一个单元格与下一行的第一个单元格(A 列中的行名称)合并。

File path = new File("/Users/Zack/Desktop/JavaDB/BALANCESHEETS");
for(File file: path.listFiles()) {
if (file.isFile()) {
String fileName = file.getName();
String ticker = fileName.split("\\_")[0];
if (ticker.equals("ASB") || ticker.equals("FRC")) {
if (ticker.equals("ASB")) {
ticker = ticker + "PRD";
}
if (ticker.equals("FRC")) {
ticker = ticker + "PRD";
}
}

Reader reader = new BufferedReader(new FileReader(file));
StringBuilder builder = new StringBuilder();

int c;
while ((c = reader.read()) != -1) {
builder.append((char) c);
}

String string = builder.toString();

ArrayList<String> stringResult = new ArrayList<String>();

if (string != null) {
String[] splitData = string.split("\\s*,\\s*");
for (int i = 0; i <splitData.length; i++) {
if (!(splitData[i] == null) || !(splitData[i].length() ==0)) {
stringResult.add(splitData[i].trim());
}
}
}



for (int i = 0; i < stringResult.size(); i++) {
int cL = stringResult.get(i).length();

for (int x = 0; x < cL; x++) {
if (Character.isLetter(stringResult.get(i).charAt(x))) {
System.out.println("index: " + i);
System.out.println(stringResult.get(i));
break;
}
}

}

以下是一些正在发生的事情的照片 https://postimg.org/image/a9qc1qggz/ https://postimg.org/image/mvna7p7s3/

知道如何解决这个问题吗?

我还注意到电子表格中的行名称前面有一个空格,我怀疑这可能是问题的一部分。

最佳答案

问题出在您在文件中阅读的位置,在这里:

Reader reader = new BufferedReader(new FileReader(file));
StringBuilder builder = new StringBuilder();

int c;
while ((c = reader.read()) != -1) {
builder.append((char) c);
}

String string = builder.toString();

这会将所有字符读取到单个字符串中,包括换行符。然后,当您拆分字符串时,您不会在新行字符上拆分,因此您最终会看到您所看到的内容。

正如前面提到的,但其他人我强烈建议您使用现有的众多 csv 解析器之一。

简单(但丑陋)的修复方法是在换行符上也进行拆分。更好的解决方法是使用 BufferedReaderreadLine() 方法。

而且!=也是你的 friend 。

关于java - 在 Java 中解析 csv 文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41253931/

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