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());
});
我有一个这样的 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());
});