java - 字符串扩展实用程序

标签 java velocity freemarker

我似乎记得 Apache Commons 或类似的 API,它允许您使用属性扩展替换内联字符串,类似于 Freemarker 或 Velocity(或与此相关的 JSP 容器)完成此操作的方式,而无需拖入这些工具。谁能记忆起这个 API 是什么?显然,名称不正确,但结构看起来像这样:

Person person = ...;
String expanded = SomeAPI.expand(
                  "Hi ${name}, you are ${age} years old today!", 
                  person);

我并不是在寻找有关如何实现此目的的其他建议(例如使用格式化程序),而是在寻找现有的 API。

最佳答案

MessageFormat 可能就是您正在寻找的:

final MessageFormat format = new MessageFormat("Hi {0}, you are {1, number, #} years old today!");
final String expanded = format.format(new Object[]{person.getName(), person.getAge()});

还有一个像String.format这样的C:

final String expanded = String.format("Hi %1s, you are %2s years old today!", person.getName(), person.getAge());

测试:

public static void main(String[] args) {
    final MessageFormat format = new MessageFormat("Hi {0}, you are {1,number,#} years old today!");
    System.out.println(format.format(new Object[]{"Name", 15}));
    System.out.println(String.format("Hi %1s, you are %2s years old today!", "Name", 15));
}

输出:

Hi Name, you are 15 years old today!
Hi Name, you are 15 years old today!

关于java - 字符串扩展实用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277645/

相关文章:

loops - "for"速度模板中的循环

html - 带页眉和页脚的速度邮件

javascript - 使用javascript访问速度变量

Spring Freemarker配置,未找到模板

exit - 是否可以退出 Freemarker 模板?

java - 如何计算我的程序的运行时间?

java - 缓冲区大小如何影响 NIO channel 性能?

java - 即使我的路径在href中正确,也无法在Chrome浏览器中找到我的CSS文件

java - Java中从最小到最大的排序列表

java - 自由标记 : read template from different path using class loader