【问题标题】:Java library that enables ${var} substitution [closed]启用 ${var} 替换的 Java 库 [关闭]
【发布时间】:2018-08-23 02:51:39
【问题描述】:

有谁知道支持文本文件中的 ${var} 样式替换的 Java 库?

【问题讨论】:

标签: java text


【解决方案1】:

使用org.apache.commons.lang3.text.StrSubstitutor

例子1(最简单的例子就是用这个类来替换Java System的属性):

  StrSubstitutor.replaceSystemProperties(
    "You are running with java.version = ${java.version} and os.name = ${os.name}.");

示例 2:

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

屈服:

   The quick brown fox jumped over the lazy dog.

【讨论】:

【解决方案2】:

【讨论】:

    【解决方案3】:

    不要错过StringTemplate,它可能是数据和模板关注点的最清晰分离,并且非常健壮。

    【讨论】:

    • 这个其实很不错,有ANTLR的作者Terence Parr支持。
    【解决方案4】:

    Java 的MessageFormat 类允许半高级文本替换,并支持数字、日期和时间的本地化和格式设置。对于复数形式,您甚至可以将 java.text.ChoiceFormat 与 MessageFormat 一起使用。 它可能足以满足您所有的文本替换需求。

    如果没有,你可以看看 Apache Velocity (http://velocity.apache.org/) 或 Freemarker(http://freemarker.sourceforge.net/)

    【讨论】:

    • 很高兴知道 Sun 对此有自己的内置工具。如果您不想包含任何其他库,它会很好地工作。它在 Java 1.4 和 5 中也可用。
    猜你喜欢
    • 2021-01-26
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多