簡體   English   中英

Java讀取文本文件,合並所有以“001”開頭的行

[英]Java read text file, combine all lines that start with "001"

  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 一

002乙

001 C

001 Z

005 一

002 C

我希望該程序將返回“ACZ”。 遺憾的是,我已經問過這個問題並得到了一個非常好的答案,但我決定不采用第一種方式,並詢問他是否可以在其中實現一些 HTML。 不過現在,我不再需要 HTML,但我無法檢索他建議我使用的舊代碼(這對現在來說是完美的)。

背景:SearchObject 是文件的名稱。

最后兩行是//'ed out,因為行沒有定義,我不知道如何開始。 任何幫助將不勝感激。

這不是我的完整代碼,但我認為程序的其余部分無關緊要,因為其余部分不處理文件讀取或任何事情。

您可以使用正則表達式

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) + " ";
    }
}

直到讀取的行不等於空(結束),然后將讀取的行分配給字符串行。

^ 代表行開始,001 是您要匹配的純文本,.* 是包含零次或多次 (*) 的任何字符 (.),而 $ 是行結束。

然后,如果這是真的,則添加從第 4 個字符開始到第 5 個字符加一個空格的行的子字符串。

嘗試使用來自 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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM