Поиск фрагмента текста в файле от фрагмента до символа

283
11 марта 2017, 01:35
public class ReplaceInFile {
    public static void main(String[] args) throws IOException {
        String fileName = "file.txt";
        String search = "31415";
        String replace = "число ПИ";
        Charset charset = StandardCharsets.UTF_8;
        Path path = Paths.get(fileName);
        Files.write(path,
            new String(Files.readAllBytes(path), charset).replace(search, replace)
                .getBytes(charset));
    }
}

В этом классе я ищу фграгмент текста в файле по полному совпадению. Как сделать так что-бы после полного совпадения программа считывала строку до символа ; ?

Пример поиска

Файл:

IP=123123; CONNECT=456456; DADADA dadada;
DATA=321321;

Если я ищу CONNECT= то его значение нужно считать до знака ;.

Answer 1

Решение, используя регулярные выражения. Ищет "значение" между "CONNECT=" и ";" в строке

public static void main(String[] args) throws IOException {
    String string = "IP=123123; CONNECT=456456; DADADA dadada;";
    String pattern1 = "CONNECT=";
    String pattern2 = ";";
    Pattern p = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
    Matcher m = p.matcher(string);
    while (m.find()) {
        System.out.println(m.group(1));
    }
}
Answer 2

Можно сделать так:

String fileName = "file.txt";
String text = "CONNECT";
String delimiter = ";";
Optional<String> result =
               Files
                    .lines(Paths.get(fileName))
                    .filter(e -> e.contains(text))
                    .map(e -> {
                        int start = e.indexOf(text);
                        int end = e.indexOf(delimiter, start + text.length());
                        return e.substring(start, end);
                    })
                    .findFirst();
result.ifPresent(System.out::println);

Данное решение позволяет не считывать весь файл целиком.

READ ALSO
Перенос праздничных дней

Перенос праздничных дней

Доброго времени сутокНеобходимо сделать так, чтоб при выпадании дня на праздничный день, дата сдвинулась на следующий день

186
Ознакомительное activity [требует правки]

Ознакомительное activity [требует правки]

Как реализовать это ознакомительное диалоговое окошко с показом возможностей приложения

227
Как импортировать библиотеку Balistica (.vala) в Android Studio

Как импортировать библиотеку Balistica (.vala) в Android Studio

Доброго времени суток, кто нибудь знает как импортировать эту ( https://githubcom/steveno/balistica ) библиотеку в Android Studio ? Как я понимаю она написана на языке...

210
Как узнать значение строки?

Как узнать значение строки?

Не могу узнать значение PA если при вводе я нажму Enter ничего не введя

218