允许$​​ {var}替换的Java库

时间:2010-03-03 21:44:36

标签: java text

是否有人知道Java库为文本文件中的$ {var}样式替换提供支持?

4 个答案:

答案 0 :(得分:7)

答案 1 :(得分:5)

使用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)

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

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

答案 3 :(得分:2)

不要错过StringTemplate这可能是数据和模板问题最清晰的分离,并且非常强大。