0

我正在尝试解析一个 csv 文件。典型的行如下所示:

7,118.2722833,98.61084463,94.36895546,,

我遇到的问题是,当我分割线时,我只得到一个长度为 4 的数组。我想让数组的第五个和第六个元素返回 null,但我得到了一个索引界误差。

这是代码的简化版本:

BufferedReader br = new BufferedReader(new FileReader("FileName"));
String line = "";
String[] datum = new String[6];

while ((line = br.readLine()) != null) {
    datum = line.split(",");

    if (datum[5] != "") {
        //some statements
    }
}

知道为什么它忽略了最后两个逗号吗?

4

3 回答 3

4

split没有任何参数的方法将丢弃任何尾随null元素。将负数传递limitsplit,它将返回一个带有null完整尾随元素的数组。

datum = line.split(",", -1);

另外,不要!=用于查看是否为空字符串;利用

if (!("".equals(datum[5]))) {
于 2013-07-15T18:21:56.847 回答
1

数组索引从 0 开始,如果你想要第 5 个元素,你需要做datum[4]而不是datum[5]

7 --------------0
118.2722833-----1
98.61084463-----2
94.36895546-----3,
 ----------------4
于 2013-07-15T18:21:49.660 回答
0

我建议阅读有关limit方法的参数java.lang.String.split(String regex, int limit)

于 2013-07-15T18:25:19.920 回答