Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串扩展实用程序_Java_Velocity_Freemarker - Fatal编程技术网

Java 字符串扩展实用程序

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!

我似乎还记得一个ApacheCommons或类似的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()});
还有一个类似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
是怎么回事?我喜欢它们,我认为它们使代码更加明显。看看小罗伯·西蒙斯的作品。