我有一个包含两种类型行的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/)
答案 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");