通过“,”和“”解析csv

时间:2013-01-17 12:45:20

标签: java parsing csv

我的数据格式为

userid, friend id, books id, cd id
1, 11 12 14 12, 223 256 333 234 222, 22
2, 78 22, 22 66 11 29, 76 455
3, 123 22 11 234 198 122 881, 34 12 98 64, 22

我只需要使用用户ID和cd id,但我无法将这些字段分开。

我的Java代码如下。

BufferedReader in = new BufferedReader(new FileReader("CSV_test.txt"));

BufferedWriter ou =new BufferedWriter(new FileWriter("users.csv"));
String str;
str = in.readLine();

while ((str = in.readLine()) != null) {

  String[] ar = str.split(",");
  String[] ar1 = ar[1].split("");


  ou.write(ar[0]);
  ou.write(",");
  ou.write(ar1[1]);

  ou.newLine(); }
in.close();
ou.close();
}

这有什么问题吗?

2 个答案:

答案 0 :(得分:4)

当然你想要

 String[] ar = str.split(",");
 String user = ar[0].trim();
 String cd = ar[3].trim();

请注意,我正在修剪以删除前导/尾随空格。

您可以使用", "进行拆分(请注意尾随空格),这样就无需进一步trim()。它确实做了一些假设,关于你的字段是如何分开的(逗号?逗号和空格?),也许值得调查CSV library

答案 1 :(得分:3)

无需重新发明轮子。虽然CSV解析相当简单,但有些事情可能有点复杂(例如在字段值中转义分隔符)。现有的库可以为您执行此操作,例如OpenCSVCsvJdbc