Java 扫描仪读取 CSV 文件时不存在的内容

Java Scanner reading something that is not there when reading CSV file

我有一个这样的 csv 文件

Mike,Smith
Scuba,Steve
John,Doe

和 java 代码如下:

Scanner file=new Scanner(new File("input.txt"));

file.useDelimiter(",");      
while (file.hasNext()){

   String s1=file.next();
   String s2=file.next();
   System.out.println(s1+" "+s2);

}
file.close();

我得到输出:

Mike Smith
Scuba
Steve
John Doe

我不明白是什么让这项工作适用于前两个名字而不是中间的名字

这是因为Smith\nScuba变成了一个令牌。 (没有 , 将它们分开。)

正在使用

file.useDelimiter(",|\n");

解决问题。


如果您碰巧使用 Java 8,我建议您使用类似的东西:

Files.lines(Paths.get("input.txt"))
     .forEach(line -> {
         Scanner s = new Scanner(line);
         s.useDelimiter(",");
         System.out.println(s.next() + " " + s.next());
     });