为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

元芳怎么了 2022-06-15 16:25:10
我对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 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

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


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);


查看完整回答
反对 回复 2022-06-15
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

如我所说


如果它是 CSV,那么你有一些分隔符(, or ;),当你阅读文件时,你已经在 line 变量中获取了整行,你可以使用 String.split 然后参考新数组上的 .length ,你将获得,那应该给你最后一列的值


但请注意,正如 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


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号