使用Scanner按值读取csv文件值,useDelimiter(&#34 ;;")不工作

时间:2014-10-24 08:59:59

标签: java csv java.util.scanner delimiter

我正在尝试使用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()? 我错过了什么吗?

2 个答案:

答案 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等。