代码之家  ›  专栏  ›  技术社区  ›  Doug Knesek

启用${var }替换的Java库

  •  4
  • Doug Knesek  · 技术社区  · 14 年前

    有人知道一个Java库,它支持文本文件中的${var }样式替换吗?

    4 回复  |  直到 6 年前
        1
  •  7
  •   David J. Liszewski    6 年前
        2
  •  4
  •   user3444334    10 年前

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

    示例1(最简单的例子是使用这个类来替换Java系统属性):

      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.
    
        3
  •  3
  •   Olivier Croisier    14 年前

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

    如果没有,您可以看看apache velocity( http://velocity.apache.org/ )或自由标记( http://freemarker.sourceforge.net/ )

        4
  •  2
  •   user177800    14 年前

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