【发布时间】:2018-08-23 02:51:39
【问题描述】:
有谁知道支持文本文件中的 ${var} 样式替换的 Java 库?
【问题讨论】:
有谁知道支持文本文件中的 ${var} 样式替换的 Java 库?
【问题讨论】:
使用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.
【讨论】:
速度(http://velocity.apache.org),FreeMarker(https://freemarker.apache.org/)
【讨论】:
不要错过StringTemplate,它可能是数据和模板关注点的最清晰分离,并且非常健壮。
【讨论】:
Java 的MessageFormat 类允许半高级文本替换,并支持数字、日期和时间的本地化和格式设置。对于复数形式,您甚至可以将 java.text.ChoiceFormat 与 MessageFormat 一起使用。 它可能足以满足您所有的文本替换需求。
如果没有,你可以看看 Apache Velocity (http://velocity.apache.org/) 或 Freemarker(http://freemarker.sourceforge.net/)
【讨论】: