Java - 将CSV文件拆分为数组

5
我已经成功地根据逗号分割了CSV文件。我是通过在每个逗号处放置一个虚拟字符串,然后根据该虚拟字符串进行分割的。
但是,CSV文件中包含以下内容:
something, something, something
something, something, something

因此,每当有一个新行时,每行的最后一个和第一个值都会合并成它们自己的字符串。我该怎么解决这个问题?我尝试在找到\n的地方放置我的虚拟字符串来基于它进行分割,但没有成功。
帮忙吗?!

你为什么不直接使用逗号进行分割呢?无论如何,发布一个 http://sscce.org/ 来获得更好的帮助。 - jalopaba
4个回答

5

我不明白为什么你需要一个虚拟字符串。为什么不用逗号进行分割呢?

BufferedReader in = new BufferedReader(new FileReader("file.csv"));
String line;
while ((line = in.readLine()) != null) {
    String[] fields = line.split(",");
}

这并不能帮助我基于行进行分割,那才是问题所在。 - mino
2
你应该逐行阅读并分别拆分每一行。这样就不会出现行合并的问题了。 - dogbane

5

我强烈建议您不要重复造轮子 :). 使用已经可用的处理CSV文件的库,例如:OpenCSV


1
根据您提到的虚拟字符串,可以使用现有库轻松处理。我想推荐开源库uniVocity-parsers,它提供了简化的API、显著的性能和灵活性。
只需引用几行代码即可将CSV数据读入内存中的数组:
private static void parseCSV() throws FileNotFoundException {
    CsvParser parser = new CsvParser(new CsvParserSettings());
    List<String[]> parsedData = parser.parseAll(new FileReader("/examples/example.csv"));

    for (String[] row : parsedData) {
        StringBuilder strBuilder = new StringBuilder();
        for (String col : row) {
            strBuilder.append(col).append("\t");
        }
        System.out.println(strBuilder);
    }
}

-1

使用以下代码将文本按行分割

               String[] a=scanner.next().split(" ");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接