我试图通过 space 解析csv文件作为分隔符然而,我的java代码只获取第一列值而不是第二列值。有人能指出我的问题吗?
CSV文件格式
DATE TIME ENV ASSIGNED
2014-07-04 04:05:10 y0 499
2014-07-04 05:14:09 y0 501
2014-07-04 06:14:47 y1 505
Java代码
String csvFile = "C:\\Tools\\parsesqldb\\his_sum.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = " ";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use space as separator
String[] data= line.split(cvsSplitBy);
System.out.println("Date Time [date= " + data[1] + " , time=" + data[2] + "]");
}
}
答案 0 :(得分:0)
以下是列分隔符:
2014-07-04 04:05:10 y0 499
^ ^^ ^
0 1| 3
2
您会注意到1到2之间的列是空的,这就是您无法获得任何内容的原因。
如果您想接受任意数量的空格作为分隔符,可以使用
String cvsSplitBy = " +";
+
是"一个或多个出现"的正则表达式。这样,双空格将被视为一个分隔符。
答案 1 :(得分:0)
你应该使用这样的代码:
string.split("\\s+")
在这里,\ s +将处理任意数量的空格> = 1。
答案 2 :(得分:0)
我认为问题更简单。日期位于返回数组的第0个索引中...尝试System.out.println("Date Time [date= " + data[0] + " , time=" + data[1] + "]");