java中的字符串替换,类似于速度模板

新手上路,请多包涵

Java 中是否有任何 String 替换机制,我可以在其中传递带有文本的对象,并在出现时替换字符串。

例如,文本是:

 Hello ${user.name},
    Welcome to ${site.name}.

我拥有的对象是 "user""site" 。我想用对象中的等效值替换 ${} 中给出的字符串。这与我们在速度模板中替换对象相同。

原文由 Joe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 577
2 个回答

使用来自 Apache Commons Text 的 StringSubstitutor

https://commons.apache.org/proper/commons-text/

它会为你做(和它的开源…)

  Map<String, String> valuesMap = new HashMap<String, String>();
 valuesMap.put("animal", "quick brown fox");
 valuesMap.put("target", "lazy dog");
 String templateString = "The ${animal} jumped over the ${target}.";
 StringSubstitutor sub = new StringSubstitutor(valuesMap);
 String resolvedString = sub.replace(templateString);

原文由 JH. 发布,翻译遵循 CC BY-SA 4.0 许可协议

看一下 java.text.MessageFormat 类,MessageFormat 获取一组对象,对其进行格式化,然后将格式化后的字符串插入模式中适当的位置。

 Object[] params = new Object[]{"hello", "!"};
String msg = MessageFormat.format("{0} world {1}", params);

原文由 RealHowTo 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题