【问题标题】:Java split CSV with two patterns [duplicate]Java拆分CSV有两种模式[重复]
【发布时间】:2015-11-20 15:57:48
【问题描述】:

我有这个格式的 CSV,我需要分成 16 个部分,根据文本:

"MY TEXT","EVER, OK",,,,,,,,,,"The, CARLO","DO","ALFA","OME, GA",,

我有这种方法,但是当出现“OME,GA”中带有逗号的大小写时不起作用。

String[] lineToMap = line.split(",");

我该如何控制这种情况?

解决方案

我发现了这个库:OPEN CSV,在我的测试中工作得很好,但是我在编码方面遇到了问题(奇怪的符号,比如 � 而不是 ü),以及 ü、ö 等字符。我正在使用语言比如德语和法语。我正在使用 UTF-8 进行测试,但没有成功,有什么办法解决这个问题吗?

CSVReader reader=new CSVReader(new InputStreamReader(new FileInputStream("data/test.csv"), "UTF-8"), 
                ',', '"', 0);
         //Read CSV line by line and use the string array as you want
          String[] nextLine;
          try {
            while ((nextLine = reader.readNext()) != null) {
                 if (nextLine != null) {
                    for (String element : nextLine) {
                        System.out.println(element);
                    }                   
                 }
               }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

【问题讨论】:

  • 你为什么要拆分它而不使用 CSV 阅读器?
  • 抓住引号内的每一项。
  • 是的,但是这一行代表 16 个部分,甚至是空的部分,例如 ,,,,,, = 空部分,但我需要采取任何方式
  • 我相信如果它是空的,那么 read next 会给你 null 。仍将保留您的订单。

标签: java parsing csv export-to-csv


【解决方案1】:

尝试在"," 上进行拆分,并手动处理数组开头和结尾的边缘情况。

【讨论】:

  • 如果有像 2,4,5,"ok","will work now" 这样的数值,则不会工作
  • 好吧,我希望你的 CSV 没有混合 :) 它在 ,,,,,,, 上也不起作用,但它让他走得更远。
  • 不,他的偏移量不会被弄乱。
猜你喜欢
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 2010-11-03
  • 2014-05-02
相关资源
最近更新 更多