当前位置: 首页 > 面试题库 >

用Java8 Lambda函数替换全部

许展鹏
2023-03-14
问题内容

给定以下变量

templateText = "Hi ${name}";
variables.put("name", "Joe");

我想使用以下代码将占位符$ {name}替换为值“ Joe”(不起作用)

 variables.keySet().forEach(k -> templateText.replaceAll("\\${\\{"+ k +"\\}"  variables.get(k)));

但是,如果我采用“旧式”方式,则一切都将正常运行:

for (Entry<String, String> entry : variables.entrySet()){
    String  regex = "\\$\\{" + entry.getKey() + "\\}";          
    templateText =  templateText.replaceAll(regex, entry.getValue());           
   }

我肯定在这里想念的东西:)


问题答案:

您还可以使用Stream.reduce(identity,accumulator,combiner)。

身份

identity是减少函数的初始值accumulator

累加器

accumulator减少identityresultidentity如果流是 顺序的 ,这是下一个减少的条件。

合路器

永远不要在 顺序 流中调用此函数。它计算下一个identityidentityresult并行 流。

BinaryOperator<String> combinerNeverBeCalledInSequentiallyStream=(identity,t) -> {
   throw new IllegalStateException("Can't be used in parallel stream");
};

String result = variables.entrySet().stream()
            .reduce(templateText
                   , (it, var) -> it.replaceAll(format("\\$\\{%s\\}", var.getKey())
                                               , var.getValue())
                   , combinerNeverBeCalledInSequentiallyStream);


 类似资料:
  • 本文向大家介绍javascript字符串替换函数如何一次性全部替换掉,包括了javascript字符串替换函数如何一次性全部替换掉的使用技巧和注意事项,需要的朋友参考一下 JS字符串替换函数:Replace(“字符串1″, “字符串2″) 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉,那么我们如何才能一次性全部替换

  • 给定以下变量 我想使用以下代码将占位符${name}替换为值“joe”(这不起作用) 但是,如果我按照“老式”的方式来做,一切都运行得很完美: )我一定漏了点什么

  • 本文向大家介绍js字符串完全替换函数分享,包括了js字符串完全替换函数分享的使用技巧和注意事项,需要的朋友参考一下 这几天用到了js字符串完全替换的功能,啥都不说,直接上代码,需要拷走即可: 以上代码实现了替换引号的功能,/g表示全部替换。其他需求,改改就能用。这里我做个笔记,希望对大家有所帮助!

  • null 我读过PDO的书。如何使用MySQL或MSSQL将代码更新为PDO?

  • 我用Mockito写UT,我想替换我的mock函数(哪个DB选择操作) 使用我在测试类中编写的新函数(使用map模拟数据库选择); 我想用正确的键输入返回正确的值 我试图这样做使用ArgumentCaptor如下,但它没有工作,因为我想 我想当调用dataBaseSelect.selectDataFromDB时,它将被模拟,然后从MapSelect.selectDataFromMap返回结果,参数

  • 函数名称:字符串替换 函数功能:字符串替换 函数方法 str,num = string.gsub(s,pattern,repl,n) 参数 类型 必填 说明 s string/table/number 是 原字符串 pattern string/table/number 是 待查找的字符串或模式匹配 repl string/table/number 是 待替换的字符串 n number 否 替换次