Java 字符串扩展实用程序
我似乎还记得一个ApacheCommons或类似的API,它允许您使用属性扩展替换内联字符串,类似于Freemarker或Velocity(或JSP容器)在不必拖入这些工具的情况下实现这一点。有人记得这个API是什么吗?显然,名称是不正确的,但构造看起来是这样的:Java 字符串扩展实用程序,java,velocity,freemarker,Java,Velocity,Freemarker,我似乎还记得一个ApacheCommons或类似的API,它允许您使用属性扩展替换内联字符串,类似于Freemarker或Velocity(或JSP容器)在不必拖入这些工具的情况下实现这一点。有人记得这个API是什么吗?显然,名称是不正确的,但构造看起来是这样的: Person person = ...; String expanded = SomeAPI.expand( "Hi ${name}, you are ${age} years old today!
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()});
还有一个类似C的字符串。格式
:
final String expanded = String.format("Hi %1s, you are %2s years old today!", person.getName(), person.getAge());
测试:
输出:
Hi Name, you are 15 years old today!
Hi Name, you are 15 years old today!
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()});
还有一个类似C的字符串。格式
:
final String expanded = String.format("Hi %1s, you are %2s years old today!", person.getName(), person.getAge());
测试:
输出:
Hi Name, you are 15 years old today!
Hi Name, you are 15 years old today!
使用Apache Commons和:
使用Apache Commons和:
+1感谢您的回复,但我想传递POJO,因为字符串可能是动态的,这就是为什么我不使用您概述的任何方法。所有
最终的是什么?我喜欢它们,我认为它们使代码更加明显。看看Rober Simmons Jr.+1,感谢您的回复,但我想传入POJO,因为字符串可能是动态的,这就是为什么我不使用您概述的任何方法的原因。所有的final
是怎么回事?我喜欢它们,我认为它们使代码更加明显。看看小罗伯·西蒙斯的作品。