JAVA разделить текст из файла и преобразовать в сообщение - PullRequest
0 голосов
/ 27 мая 2018

я создал класс сообщения (сообщение имеет тело, отправителя, адрес всех строк) У меня есть текстовый файл, который выглядит следующим образом: От: отправитель Кому: тело сообщения adreess

(поля с новымстрока)

мне нужно создать массив сообщений из этого текстового файла

, как это лучше всего сделать?(я пытаюсь сделать это с помощью split, но у меня были некоторые проблемы)

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

Если функция разделения не работает нормально, вы можете использовать StringTokenizer.Класс tokenizer для строк позволяет приложению разбивать строку на токены.Набор разделителей (символов, разделяющих токены) может быть указан либо во время создания, либо для каждого токена.Ниже вы можете найти пример:

String message = "From: sender\nTo: adress message\nbody";
System.out.println(message);
StringTokenizer st = new StringTokenizer(message, "\n");

while(st.hasMoreTokens()) {
  System.out.print("[" + st.nextToken() + "]");
}
0 голосов
/ 27 мая 2018

Сначала вам нужно разделить "", а затем у вас есть

[From, From Argument(s), To, To argument(s), And message also splitted]

Теперь вам нужно получить все аргументы From Arguments и All To в 2 строки.

А затем последние аргументы добавляют их в строку.

Во-вторых, вы можете разделить ":" из переменных From и To

Этоэто!

0 голосов
/ 27 мая 2018

Если я ясно понимаю вашу проблему, у вас есть несколько сообщений в одном файле, и сообщение состоит из 3 строк:

  • От
  • До
  • Тело

Затем вы можете сделать это так:

public List<Message> getMessages(String fileName) throws IOException {
    List<Message> messages = new ArrayList<>();
    try {
        String from;
        String to;
        String body;
        Message message;
        List<String> lines = Files.readAllLines(Paths.get(fileName));
        for (int i = 0; i < lines.size(); i += 3) {
            from = lines.get(i);
            to = lines.get(i + 1);
            body = lines.get(i + 2);
            message = new Message(from, to, body);
            messages.add(message);
        }
    } catch (IOException e) {
        throw e;
    }
    return messages;
}

Здесь вы перебираете файл сообщений, в котором передаете имя файла в параметрах, и увеличиваете счетчик строк до 3.на каждой итерации, так что вы можете просто получить все нужные вам данные (от, до и тело).

Если этого примера кода недостаточно, вы можете использовать split () от, до и тела, чтобы извлечьтолько значение:

String fromValue = from.split(": ")[1]

Примечание: используемый здесь класс сообщений выглядит так:

public class Message {

    private String from;

    private String to;

    private String body;

    public Message(String from, String to, String body) {
        this.from = from;
        this.to = to;
        this.body = body;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...