如何从数据集中检索最后一列

时间:2019-02-11 12:26:58

标签: java oop

我对Java很陌生,对此有疑问。

这些是我的代码,我所做的是我已经从txt文件中过滤出数据并将其保存到另一个txt文件中。

我现在要做的是检索指定列(这是最后一列)并将该数据用于分析。

我想在最后一列中搜索某个关键字出现的次数。

只要有匹配项,计数器就会增加,并且用定界符分隔文本。

例如,txt文件中有a,b,c,d,e,f,g,h,i,j。 而且我想从j本身检索一个指定关键字,并有一个计数器,该计数器每次发生时都会增加。

有人可以建议如何做吗?

这些是我的代码:

import java.io.*;

public class java {

    public static void main(String[] args) {
        String searchWord = "asiana";

        try (BufferedReader in = new BufferedReader(
                new FileReader("D:\\Downloads\\dataAnalysis1.txt"));
            BufferedWriter out = new BufferedWriter(
                new FileWriter("D:\\Downloads\\output.txt"))) {

            String line;

            while ((line = in.readLine()) != null) {
                System.out.println(line);

                // extract by lines and write to file
                if (line.contains(searchWord)) {
                    out.write(line);
                    out.newLine();
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

正如我提到的

  

如果其为CSV,则说明您在读取文件时使用了一些分隔符(, or ;),那么您已经获取了整行的行变量,可以使用String.split,然后引用。您将获得的新数组的长度,应该为您提供最后一列的值

但是要注意,正如普罗霍罗夫(M. Prokhorov)所提到的,如果数据还将包含转义的分隔符,那么它将无法正常工作,取决于数据

public static String getLastColumnValue(String value, char separator) {
        //https://stackoverflow.com/questions/54630596/how-to-retrieve-last-column-from-set-of-data
        String[] tokens = value.split(String.valueOf(separator));
        //indexed from zero -> length -1
        if(tokens.length>0) {
            return tokens[tokens.length-1];
        }else {
            return null;
        }
    }

经过测试

System.out.println(StringUtils.getLastColumnValue("first col;second;foo;fooolastsemicol", ';'));
//fooolastsemicol
System.out.println(StringUtils.getLastColumnValue("first col,second,foo,fooolastcomma", ','));
//fooolastcomma

答案 1 :(得分:0)

“找到任何匹配项时,可以将结果放入数组/列表的字符串中。还可以返回列表/数组中的最后一个元素”;

String searchWord = "asiana";
 List<String> list = new LinkedList<String>();

    try (BufferedReader in = new BufferedReader(
            new FileReader("D:\\Downloads\\dataAnalysis1.txt"));
        BufferedWriter out = new BufferedWriter(
            new FileWriter("D:\\Downloads\\output.txt"))) {

        String line;

        while ((line = in.readLine()) != null) {
            System.out.println(line);

            // extract by lines and write to file
            if (line.contains(searchWord)) {
                out.write(line);
                list.addLast(line);
                out.newLine();
            }
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    //print the last element from the list.
    print: list.get(list.size()-1);