在java 8中使用单个函数替换多个字符串

Anu*_*rma 3 java lambda java-8 java-stream

我想替换String多个文件中存在的三个s.假设我想用"MYEVENT"替换"EVENT",用"TRACE"替换"TRACE",用"MYLOGS"替换"LOGS".我已经为它编写了三个函数,但我想将这些函数组合成一个函数.

我的一个职能是:

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();
    }

}
Run Code Online (Sandbox Code Playgroud)

这三个功能共同占用大约7秒,所以我希望通过将它们组合成单个功能来减少时间.

如果我有"N"个替换件,你能帮我吗?比如用123代替ABC,用234替换DEF,用4567代替GEF,用8910代替LMN等......我从属性文件的键值对得到这些值

Era*_*ran 6

怎么样:

List<String> replaced = 
    lines.map(line -> line.replace("TRACE", "MYTRACE").replace("LOGS","MYLOGS").replace("EVENT","MYEVENT"))
         .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)