opencsv 从未知行读取但已知单词?

opencsv read from an unknow line but known word?

好的,我有一个 csv 文件:

Summary
    heading1,heading2,heading3
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2
Detail
    heading11,heading12,heading13
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2

我正在使用 com.opencsv.CSVReader 库。

我需要从行 "Detail" 读取,但我不知道它是哪一行,因为它之前可能有未定义数量的行。摘要从
开始 第 13 行,但我知道如何处理它。

opencsv 是否有一种简单的模式来找到行 "Detail" 并从那里开始? 或者我是否需要以某种方式计算 Detail 之前的行并将其作为参数传递给 OPENCSV?

由于将 CSV 分成多个部分不是常见要求,库也不一定支持,因此您应该找到自己感兴趣的行开始的位置并提取它们。一种方式可能是:

BufferedReader b = new BufferedReader(new FileReader(source));
String line = b.readLine();
StringBuilder build = new StringBuilder();
while(line != null && !line.equals("Detail")){
    line = b.readLine();
}
line = b.readLine();
while(line != null){
    build.append(line);
    build.append('\n');
    line = b.readLine();
}
System.out.println(build.toString());
Reader toBeParsed = new StringReader(build.toString());

这基本上是读取文件,直到找到与详细信息部分匹配的行,然后将所有剩余行添加到字符串中。从此字符串中使用 reader 可以将其输入 CSVReader。

我假设必须考虑所有剩余的行(如果不是这种情况,请考虑匹配另一个字符串以停止它),并且开始的行正好是 "Detail"(您可以使用用于更灵活方法的正则表达式)

Here is a live demo