Замените несколько строк, используя одну функцию в Java 8 - PullRequest
0 голосов
/ 13 июня 2018

Я хочу заменить три String s, которые присутствуют в нескольких файлах.Скажем, я хочу заменить «EVENT» на «MYEVENT», «TRACE» на «TRACE» и «LOGS» на «MYLOGS».Я написал для него три функции, но я хочу объединить эти функции в одну функцию.

Одна из моих функций:

public static void findAndReplaceKey(String filePath) {

    try {
        Path path = Paths.get(filePath);
        Stream<String> lines = Files.lines(path);
        List<String> replaced = lines.map(line -> line.replaceAll("TRACE", "MYTRACE")).collect(Collectors.toList());
        Files.write(path, replaced);
        lines.close();
        // System.out.println("Find and Replace done!!!");
    } catch (IOException e) {
        e.printStackTrace();
    }

}

Эти три функции в совокупности занимают около 7 секунд, поэтому я хочу сократить время, объединив их в одну функцию.

Можете ли вы также помочь мне, если у меня есть "N" количество замен, которые будут сделаны.Скажем, заменить ABC на 123, DEF на 234, GEF на 4567, LMN на 8910 и т. Д. ...... Я получаю эти значения из пары ключ-значение файла свойств

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

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

List<String> replaced = lines.map(line -> line.replaceAll("(TRACE|LOGS|EVENT)", "MY$1")
                             .collect(Collectors.toList());
0 голосов
/ 13 июня 2018

Как насчет:

List<String> replaced = 
    lines.map(line -> line.replace("TRACE", "MYTRACE").replace("LOGS","MYLOGS").replace("EVENT","MYEVENT"))
         .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...