Java 中属性中的动态占位符替换

2022-09-01 18:11:25

我想在java应用程序的属性中动态替换占位符。喜欢

 WelcomeMessage=Welcome Mr. {firstName} {lastName} !!!

这些名字和姓氏变量需要动态替换。我们应该使用速度模板引擎吗?或者还有其他类似的开源框架吗?

谢谢,马尼什


答案 1

您可以使用 Java SE 的 MessageFormat 类。它允许您完全按照自己的要求去做。

在你的例子中,下面的代码片段必须做到这一点,假设 props 包含从你的文件加载的所有属性。

MessageFormat.format((String) props.get("WelcomeMessage"), "First", "Last");

请注意,属性文件应具有参数索引,而不是命名参数,如下所示。

WelcomeMessage=Welcome Mr. {0} {1} !!!

答案 2

速度是相当古老和不愉快的,在我看来,有更好的方法来做到这一点:

  • StringTemplate是最简单的模板引擎,足以满足您的需求(请参阅此处的语法示例)。
  • 如果你已经在使用Spring 3,它有ProperitePlaceholderHelper类,它也可以做到这一点,但我不会使用Spring只是为了获得这个类。