java - 解析CSV时如何获得正确的字符串数组?

标签 java parsing csv dto jcsv

Using jcsv我正在尝试将 CSV 解析为指定类型。当我解析它时,它说数据参数的长度是1。这是不正确的。我尝试删除换行符,但它仍然显示 1。我是否只是错过了一些显而易见的东西?

这是我的输入字符串 csvString 变量

"Symbol","Last","Chg(%)","Vol",
INTC,23.90,1.06,28419200,
GE,26.83,0.19,22707700,
PFE,31.88,-0.03,17036200,
MRK,49.83,0.50,11565500,
T,35.41,0.37,11471300,

这是解析器

  public class BuySignalParser implements CSVEntryParser<BuySignal> {
  @Override
  public BuySignal parseEntry(String... data) {

    // console says "Length 1"
    System.out.println("Length " + data.length);

    if (data.length != 4) {
      throw new IllegalArgumentException("data is not a valid BuySignal record");
    }

    String symbol = data[0];
    double last = Double.parseDouble(data[1]);
    double change = Double.parseDouble(data[2]);
    double volume = Double.parseDouble(data[3]);

    return new BuySignal(symbol, last, change, volume);
  }
}

这就是我使用解析器的地方(就在示例中)

CSVReader<BuySignal> cReader = new CSVReaderBuilder<BuySignal>(new StringReader( csvString)).entryParser(new BuySignalParser()).build();
List<BuySignal> signals = cReader.readAll();

最佳答案

jcsv 允许使用不同的分隔符。默认为分号。使用 CSVStrategy.UK_DEFAULT 来使用逗号。

此外,您有四个逗号,通常表示五个值。您可能想要删除末尾的分隔符。

我不知道如何让 jcsv 忽略第一行

我通常使用 CSVHelper解析 CSV 文件,虽然 jcsv 看起来相当不错,但以下是使用 CVSHelper 的方法:

Reader reader = new InputStreamReader(new FileInputStream("persons.csv"), "UTF-8");

//bring in the first line with the headers if you want them
List<String> firstRow = CSVHelper.parseLine(reader);

List<String> dataRow = CSVHelper.parseLine(reader);
while (dataRow!=null) {

    ...put your code here to construct your objects from the strings

    dataRow = CSVHelper.parseLine(reader);
}

关于java - 解析CSV时如何获得正确的字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307034/

相关文章:

Java - 当 ID 添加到时间时,MySQL 查询 where 子句失败

java - While 循环检查重复字符

c++ - 在 C++ 中查找字符串中的子字符串标记

ruby - Ruby 中的通用换行符支持,包括\r (CR) 行尾

java - 使用 HashMap 中的列和值创建 CSV 文件

java - Openfire VOIP 客户端,如何使用媒体代理

java - 为什么我用 while( in.hasNext() ) 从键盘获取值

c - 以最有效的方式读取 CGI POST 数据

arrays - Powershell解析帮助-中级排序

java - 如何解析 csv 文件并将详细信息存储在 java bean 类中