Разделить файл по разделителю в Java - PullRequest
0 голосов
/ 26 марта 2020

Скажем, у меня есть файл, который выглядит следующим образом:

---------
line11
line12
line13
---------
line21
line22
line23
line24
line25
---------
line31
line32
---------

И мне нужно разбить список строк из этого файла на подсписки, разделенные строкой, содержащие символы da sh, и обработать их отдельно , Есть ли какой-нибудь удобный способ сделать это в Java?

Ответы [ 2 ]

2 голосов
/ 26 марта 2020

Быстрый способ - использовать класс Scanner. Укажите пользовательский разделитель, и он вернет вам куски строк.

    Scanner scanner = new Scanner(new File("file.txt"));
    scanner.useDelimiter("---------");
    while (scanner.hasNext()) {
        System.out.println("<<<<" + scanner.next() + ">>>>>");
    }

Вывод:

<<<<
line11
line12
line13
>>>>>
<<<<
line21
line22
line23
line24
line25
>>>>>
<<<<
line31
line32
>>>>>
1 голос
/ 26 марта 2020

Как уже упоминал @MadProgrammer, алгоритм будет if (input.equals("---------")) { /* create new sublist */ }. Там будет несколько проверок, которые прямо вперед. Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String line;
        List<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
        List<String> sublist = new ArrayList<String>();
        int row = 1;
        try {
            Scanner reader = new Scanner(new File("file.txt"));
            while (reader.hasNextLine()) {
                line = reader.nextLine();
                if (line != null && row != 1 && line.equals("---------")) {
                    list.add(new ArrayList<String>(sublist));
                    sublist = new ArrayList<String>();
                } else {
                    if (!line.equals("---------")) {
                        sublist.add(line);
                    }
                    row++;
                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("Error: unable to read file.");
        }
        System.out.println(list);
    }
}

Вывод:

[[line11, line12, line13], [line21, line22, line23, line24, line25], [line31, line32]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...