我正在使用MessageFormat使用如下模板格式化某些地址:
"{0}\n{1}\n{2}\n{3}, {4} {5}"
,其中
捕获时,大多数这些字段都是可选的。例如,如果没有街道3,我该如何避免空行?我可以使用这样的模板“{0} {1} {2} {3} {4} {5}”,然后相应地替换“street 3 \ n”或“”,但模板不提供对格式化有很大好处。
有没有办法在格式字符串中包含条件?或者是否有另一种,最好是轻量级的模板工具,它支持条件格式化?
答案 0 :(得分:7)
编辑:重写......
如果您不关心设计,那么您可以随意选择模板引擎,或者因为您喜欢它的名称,或者其他什么。如果您没有选择引擎的标准,那么谁在乎您选择哪一个?
另一方面,如果您关心设计,例如使用模型 - 视图 - 控制器(MVC)设计模式,那么您的选择会迅速减少。
这里的大部分答案都强调了各种模板引擎的强大功能。但MVC的重点在于你不想做更多,因为在你的模板中做更多事情最终会让你非常伤心。业务逻辑不属于View,它属于Model。控制逻辑属于控制器。实际上只有一个模板引擎强制执行MVC模式。如果你不想要MVC模式(也许你正在超越它),那一个引擎仍然可以帮助你不伤害自己,并鼓励你正确划分你的功能。
实际上只有一个好的模板引擎: StringTemplate 。有关原因的详细信息,请参阅http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf。
我在多个平台(Python,Java,.Net)以及许多替代方案和StringTemplate规则上使用过它。
做出决定。请享用。祝福。
答案 1 :(得分:5)
其他人已经提到了字符串模板,但我们最近切换到了MVEL(它也做了更多,但实际上并没有增加太多的重量):http://mvel.codehaus.org/(我发现它更容易使用)。
答案 2 :(得分:3)
恕我直言Chunk Templating engine是最好的。 jar文件只有 180 KB !并支持 IF 和迭代。这有多酷!
答案 3 :(得分:2)
不知道你认为它有多轻量级,但Apache Velocity是最着名的Java模板引擎之一。
答案 4 :(得分:2)
这用于建立网站jGuru - 它已经存在了一段时间。
答案 5 :(得分:1)
你可以按照你的方式进行格式化,然后通过用一个'\n'
替换多个'\n'
的一行来删除空行,例如
result = result.replaceAll("\n+", "\n");
答案 6 :(得分:0)
使用Velocity或Freemarker。
答案 7 :(得分:0)
Freemarker非常好。它轻巧,快速,具有条件格式,以及其他一些功能。