是否有人知道Java库为文本文件中的$ {var}样式替换提供支持?
答案 0 :(得分:7)
速度(http://velocity.apache.org),FreeMarker(https://freemarker.apache.org/)
答案 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这可能是数据和模板问题最清晰的分离,并且非常强大。