gpt4 book ai didi

java - 通过 lambda java8 转换 xml 字符串

转载 作者:行者123 更新时间:2023-11-30 02:15:06 26 4
gpt4 key购买 nike

我有 XML 格式的 String。我正在尝试通过正则表达式转换String:

public String replaceValueByTag(final String source, String tag, String value) {
return replaceFirst(source, "(?<=<" + tag + ">).*?(?=</" + tag + ">)", value);
}

然后创建带有标签的 map ,新值:

Map<String, String> params = TAGS.stream().collect(toMap(tag -> tag, tag -> substringByTag(request, tag)));

并使用map来替换XML中的值:

public String getConfirm(String request) {
String[] answer = {template};
Map<String, String> params = TAGS.stream().collect(toMap(tag -> tag, tag -> substringByTag(request, tag)));
params.entrySet().forEach(entry -> answer[0] = replaceValueByTag(answer[0], entry.getKey(), entry.getValue()));
return answer[0];
}

如何编写 lambda 表达式而不保存在数组中(lambda 接受 String,通过映射将其转换并返回 String)?

最佳答案

您可以使用 reduce 将 map 条目的 Stream 的所有元素应用到 template 字符串上。

不过,我不确定 combiner 应该是什么样子(即如何将两个部分转换的 String 组合成一个 String > 包含所有转换),但如果顺序 Stream 就足够了,则不需要组合器:

String result = 
params.entrySet()
.stream()
.reduce(template,
(t,e) -> replaceValueByTag(t, e.getKey(), e.getValue()),
(s1,s2)->s1); // dummy combiner

关于java - 通过 lambda java8 转换 xml 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com