首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果csv文件中的某些字段为空,则使用java读取一列

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

Stack Overflow用户
提问于 2010-10-21 14:32:19
回答 3查看 5.9K关注 0票数 2

例如:

代码语言:javascript
复制
a   a       0           12      4

b   b   0           29

a   c   0   3   b   87      12

z   y   ab  81      43

我要5号栏目。

因为csv文件有字符串标记器,用",“分隔。可能有一些字段为空,这些字段未计入tokens.So。我没有在具有相同令牌号的同一列中获取字段。

EN

回答 3

Stack Overflow用户

发布于 2010-10-21 15:23:06

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

票数 1
EN

Stack Overflow用户

发布于 2010-10-21 14:44:40

做了很多假设。对于您应该执行的每一行:

代码语言:javascript
复制
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#中是可行的

票数 0
EN

Stack Overflow用户

发布于 2010-10-21 14:52:22

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

代码语言:javascript
复制
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));
        }
    }
}

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

代码语言:javascript
复制
a   a   0           12  4
b   b   0           29  
a   c   0   3   b   87  12
z   y   ab  81      43  

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

代码语言:javascript
复制
12
29
87
43
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3984865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档