首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取txt文件的1个特定列并存储到数组或ArrayList [Java]

如何读取txt文件的1个特定列并存储到数组或ArrayList [Java]
EN

Stack Overflow用户
提问于 2020-09-24 04:09:09
回答 2查看 36关注 0票数 0

The txt file I need to pull data from. I am only concerned with the STID column as I need to compare their Hamming distances with other inputted STID names in another part of the program

Trial code using a Scanner

我在考虑使用BufferedReader (尽管在我的第一次试验中使用了扫描仪),然后使用.add()将数据提取到ArrayList中,但不确定如何实现,因为我是编程新手。任何帮助都将不胜感激

EN

回答 2

Stack Overflow用户

发布于 2020-09-24 05:07:23

使用扫描仪对象(https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine() )的nextLine()方法,您可以获取文本文件的每一行。

获取STID列非常简单,因为它是第一个列,并且总是从行首开始。

我会怎么做:只需使用nextLine()几次来跳过您不感兴趣的行。一旦到达包含第一个STID的第一行,nextLine()方法就会给出整行。STID似乎总是4个字符,所以您可以在行上使用substring(0,4)方法来仅获取所需的4个字符。一旦你有了它,你就可以将这个子串添加到你的ArrayList中。

票数 0
EN

Stack Overflow用户

发布于 2020-09-24 07:51:35

我采用了BufferedReader路线,并得出了以下结论:

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Mesonet {
  public static void main(String[] args) {

    try {
      List<String> STIDS = new ArrayList<String>();
      BufferedReader reader = new BufferedReader(
                              new FileReader("Mesonet.txt"));
      Pattern p = Pattern.compile("^([A-Z0-9]{4}).*");

      reader.readLine(); // repeat as necessary to skip headers...
      while (reader.ready()) {
        String line = reader.readLine();
        Matcher m = p.matcher(line);
        if (m.matches()) {
          STIDS.add(m.group(1));
        }
      }

      for (String STID : STIDS) {
        System.out.println(STID);
      }
    }
    catch (FileNotFoundException err) {
      System.out.println("Where is the file?");
    }
    catch (IOException err) {
      System.out.println("IO Problem");
    }
  }
}

这将匹配前4个大写字母和数字组合,并将它们放入数组中,然后打印出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64035532

复制
相关文章

相似问题

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