如果地图中不存在属性,如何使用 strsubsitutor 将模板字符串中的值替换为 null 或空字符串

Posted

技术标签:

【中文标题】如果地图中不存在属性,如何使用 strsubsitutor 将模板字符串中的值替换为 null 或空字符串【英文标题】:if an attribute is not present in map, How to replace the values in template string using strsubsitutor as null or empty string 【发布时间】:2020-12-26 14:44:52 【问题描述】:

我有一个字符串

String templateString = "The $animal jumps over the $target.";
valuesMap.put("animal", "quick brown fox");
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);

但是 valuesMap 中没有 attr target 的条目。 最终的 resolveString 将是 敏捷的棕色狐狸跳过 $target。

而不是 $target,它需要为空。在 map 中没有键的 templatestring 中的值应该为空或 null。

必填 敏捷的棕色狐狸跳过了。

如何处理

【问题讨论】:

【参考方案1】:

您的 Map<String,String> valuesMap 仅包含一对键,值 "animal", "quick brown fox",您必须将一对 "target", "" 添加到您的地图中,如下所示:

String templateString = "The $animal jumps over the $target.";
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", ""); //<-- adding the new couple to the map
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);

【讨论】:

刚刚检查了 strsubstitutor 的文档。我们可以使用定界符在模板字符串中设置默认值回复您的答案,如果我从外部 api 获取该映射,如果它为空则不包含键。你如何处理这个案子? (键是动态的) @KarthikCkn 如果我理解得很好,您不想从外部 api 修改原始地图并设置一个空的默认值,在这种情况下,您可以在字符串模板中使用 :- 运算符和空默认值,如 $animal jumps over the $target:-

以上是关于如果地图中不存在属性,如何使用 strsubsitutor 将模板字符串中的值替换为 null 或空字符串的主要内容,如果未能解决你的问题,请参考以下文章

Powershell中不存在特定对象属性时如何删除条目?

如果第二个对象中不存在两个对象,则合并两个对象并保留第一个对象的属性[重复]

如果使用命令行或 sql 在大查询中不存在表,如何创建表

如果对象存在,我如何编辑它或创建 Django 中不存在的对象?

如果标头中不存在 JWT 令牌,如何执行一些逻辑?

UserAccountControl 属性中不存在 PASSWD_CANT_CHANGE 标志