我正在尝试使用Scanner.useDelimiter(";")
按值读取CSV文件值
但是Scanner.nextLine()
仍会返回整行而不是单个值。
CSV文件如下所示:
0.00034;0.1;0.3;0.6;1,00E-13
我的代码:
Scanner iStream = new Scanner(new InputStreamReader(new FileInputStream(file.cvs);
iStream.useDelimiter(";");
String[] test = new String[5];
for (int i = 0; i < 5; i++) {
test[i] = iStream.nextLine();
}
结果:
"0.00034;0.1;0.3;0.6;1,00E-13"
预期结果:
"0.00034", "0.1", "0.3", "0.6", "1,00E-13"
这可能,还是应该使用String.split()
?
我错过了什么吗?
答案 0 :(得分:3)
除了这个问题是为OpenCSV等解析库准备好的事实之外,nextLine
并不考虑分隔符模式。请改用next
test[i] = iStream.next();
答案 1 :(得分:0)
从Java Scanner文档:
public String next()
Finds and returns the next complete token from this scanner.
A complete token is preceded and followed by input that matches the delimiter pattern.
这确实回答了你的问题。但是,我不确定next
在开始和结束时的行为,因为它必须由分隔符“先行和后续”。也许有人可以填写这个?
您可以在分隔符中添加额外的字符,例如\n
等。