JAVA - CSV文件格式化(2种类型的行) - 我不知道如何分割数据

时间:2014-01-02 16:44:55

标签: java csv

我有一个包含两种类型行的CSV文件:

CSV文件格式

line type 1:  "user1=",data1,data2,        
line type 2:  "user2=",data3,data4,  
data5
data6
line type 1:  "user3="data6,data7  

我正在尝试使用以下代码将每个用户(包含他的所有数据)插入到Array中:

 br = new BufferedReader(new FileReader(csvFile));
 while ((line = br.readLine()) != null)
    {
  String[] users = line.split(",");

类型第1行被拆分。 问题是拆分类型第2行,我不知道该怎么做。

预期结果

users [user1, data1, data2]
users [user2, data3, data4, data5, data6]
users [user3, data7, data8]

来源(http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/

1 个答案:

答案 0 :(得分:0)

代码中的分割功能没有问题。使用trim()删除额外的空间并使用substring()来检测第一个元素(即" user1 ="或" user2 ="等)将其修改为user1 / user2。我使用了你提供的相同例子。

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {

            if (line.startsWith("\"user")) {

                if (!firstElement)
                    System.out.print("]\n");

                System.out.print("users [");
                firstElement = true;

            }
            // use comma as separato
            String[] country = line.split(cvsSplitBy);

            for (int i = 0; i < country.length; i++) {

                if (country[i].trim().length() != 0) {
                    if (country[i].endsWith("=\"")) {
                        country[i] = country[i].substring(0,
                                country[i].length() - 2);
                    }
                    if (firstElement) {
                        System.out.print(country[i].substring(1));

                        firstElement = false;
                    }

                    else {
                        System.out.print(", " + country[i]);
                    }
                }
            }

        }
        System.out.print("]\n");