我似乎记得 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/