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

如果使用java的csv文件中的某些字段为空,则读取一列,java,Java,比如说- a a 0 12 4 b b 0 29 a c 0 3 b 87 12 z y ab 81 43 我要第五栏 由于csv文件具有由“,”分隔的字符串标记器。可能有一些字段是空的,不算作令牌。因此,我没有在同一列中获得具有相同令牌编号的字段。正在进行大量假设。对于每一行,您应该执行以下操作: String myString; String[] stringA

比如说-

a   a       0           12      4

b   b   0           29

a   c   0   3   b   87      12

z   y   ab  81      43
我要第五栏


由于csv文件具有由“,”分隔的字符串标记器。可能有一些字段是空的,不算作令牌。因此,我没有在同一列中获得具有相同令牌编号的字段。

正在进行大量假设。对于每一行,您应该执行以下操作:

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#

中会起作用,因为您的数据似乎是用制表符分隔的。在这种情况下,应使用以下代码:

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));
        }
    }
}
如果数据包含以下(制表符分隔)行

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

12
29
87
43

尝试使用更多测试过的代码,如用于解析CSV文件。

问题不清楚。你能再解释一下吗?你能发布一个csv文件的片段吗?您在解析过程中遇到了哪些问题?(例如,你能打开文件吗?你能逐行阅读吗?)你太好了。。。我希望这不是一个家庭作业问题!不。但我的CSV文件是逗号分隔的。它不计算空字段。我们在问题的示例中说明这一点,并在
“,“
上拆分,而不是
”\t“
…可能有一些空字段不计算为令牌。因此,我没有在同一列中获得具有相同令牌号的字段。(使用字符串标记器获取标记)
12
29
87
43