Java读取文本文件,合并以“ 001”开头的所有行

时间:2019-03-03 19:30:53

标签: java

  public class event implements ActionListener { //_________________________________

    public void actionPerformed(ActionEvent Action){
      System.out.println("Clicked");

      String searchObject = tagTextField.getText();
   FileReader fr = new FileReader(searchObject + ".txt");
    BufferedReader br = new BufferedReader(fr);

// if(line.startsWith("001")){

// }

这就是我现在所拥有的。我的目标是文本文件的第一个单词为001或002或0003。然后,单词后面是字母。我希望能够识别以001开头的行中的所有字母,它们全部合并到一个变量中,以显示在JTextField中。一个例子:

001 A

002 B

001 C

001 Z

005 A

002 C

我希望程序将返回“ A C Z”。可悲的是,我已经问了这个问题,并得到了一个很好的答案,但是我决定不做第一种方法,而是问他是否可以在其中实现一些HTML。现在,虽然我不再需要HTML,但无法检索他建议我使用的旧代码(这对现在来说是完美的)。

背景:SearchObject是文件的名称。

最后两行被// //删除,因为未定义行,我也不知道如何开始。任何帮助将不胜感激。

这不是我的完整代码,但我认为程序的其余部分无关紧要,因为其余部分不会处理文件读取或其他任何操作。

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式

BufferedReader br = new BufferedReader(file);
String line;
String result;

while(br.readLine() != null) {
    line = br.readLine();
    if(line.matches("^001.*$")) {
        result += line.subString(4, 5) + " ";
    }
}

直到读取的行不等于null(结尾),然后将读取的行分配给字符串line。

^代表行首,001是您要匹配的纯文本,。*是包含零次或多次(*)的任何字符(。),$是行尾。

然后,如果为true,则添加该行的子字符串,该子字符串从第4个字符开始,以第5个字符结束并加一个空格。

答案 1 :(得分:0)

尝试从Java-8使用Files来读取文件中的所有行,并过滤行startsWith 001。然后拆分字符串从索引1获取值

try (Stream<String> stream = Files.lines(Paths.get(searchObject + ".txt"))) {

        List<String> abc = stream.filter(str->str.startsWith("001"))
                                 .map(s->s.split("001")[1]).collect(Collectors.toList());

        System.out.println(abc);    // A C Z

    } catch (IOException e) {
        e.printStackTrace();
    }