Java 通过“,”解析csv&引用;及&引用;

Java 通过“,”解析csv&引用;及&引用;,java,parsing,csv,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 F

我有一个数据格式为的文件

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();
}
这有什么问题吗?

你肯定想要

 String[] ar = str.split(",");
 String user = ar[0].trim();
 String cd = ar[3].trim();
请注意,我正在修剪以删除前导/尾随空格


您可以使用
,“
(注意尾随空格)进行拆分,这样就不需要进一步
trim()
。不过,它确实对字段是如何分开的(逗号?逗号和空格?)做出了一些假设,也许值得研究一个问题。

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

我可以建议使用StrugUTLS来分割“,”吗?也许您可以考虑使用一些库来进行CSV操作,比如,如果您需要做很多与CSV有关的东西。这不是对您的问题的回答,但在将来可能会有所帮助。这个问题似乎离题了,因为它是一个代码审查的请求。+1对于我的库建议也是如此。我已经能够说服我工作的团队成员使用相同问题的库。每次他们解决了一个问题,我都举了一个实施失败的例子。直到他们累了:)。我们可能会忽略很多事情:数据中出现的分隔符、字符集问题等。使用现有的、经过良好测试的API将更加简单和安全。