如果使用java在csv文件中某些字段为空,请读取一列

时间:2010-10-21 06:32:19

标签: java

例如 -

a   a       0           12      4

b   b   0           29

a   c   0   3   b   87      12

z   y   ab  81      43

我想要第5列。

由于csv文件的字符串标记符由“,”分隔。可能有一些字段为空,不计入令牌。所以我没有在同一列中获得具有相同令牌编号的字段。

3 个答案:

答案 0 :(得分:1)

尝试使用经过测试的代码http://opencsv.sourceforge.net/来解析CSV文件。

答案 1 :(得分:0)

处理大量假设。对于你应该做的每一行:

String myString;
String[] stringArray = testString.split(",");//To give us a nice indexable format

if(stringArray.length > 6) //Stops us from indexing out of bounds
{
      myString = stringArray[5]; //Because we want the 5th column
}

我假设您正在寻找第5列,而不是左侧的第5列,因为这将是列索引4.(因为数组是从0开始的)

我不再是Java程序员,所以如果有任何错误,请原谅我。这可以在c#

中使用

答案 2 :(得分:0)

您的数据似乎是以制表符分隔的。在这种情况下,以下代码应该:

import java.io.*;
import java.util.*;

class Main {
    public static void main(String... args) throws FileNotFoundException {

        Scanner s = new Scanner(new File("data.txt"));
        while (s.hasNextLine()) {
            String line = s.nextLine();
            String[] cols = line.split("\t");
            System.out.println(cols[5]);
            //System.out.println(Arrays.toString(cols));
        }
    }
}

如果数据包含以下(制表符分隔的)行

a   a   0           12  4
b   b   0           29  
a   c   0   3   b   87  12
z   y   ab  81      43  

您将从上述程序中获得以下输出:

12
29
87
43