有没有办法创建像我们创建PreparedStatements的字符串?我的意思是用'?'创建整个字符串我需要稍后插入值,然后根据条件插入此值。在StringBuilder中,我没有找到这样的功能,只能通过offset附加或插入。
答案 0 :(得分:5)
这是来自MessageFormat的javadoc:
int planet = 7;
String event = "a disturbance in the Force";
String result = MessageFormat.format(
"At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
planet, new Date(), event);
输出结果为:
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
你可以看到简单的插入是可能的({2}),但也可以是更复杂的插入。
答案 1 :(得分:2)
如果您不需要StringBuilder
来执行此操作,则String.format(String pattern, Object... args)
方法可以满足您的需求。
只需为%s
或String
表示整数格式的占位符(包括%d
),long
表示Floats(包括%f
})。有关格式的完整文档,请参阅here
例如:
double
答案 2 :(得分:2)
一般的想法是,您提供format string并提供实际值。
看起来像这样:
final String name = "Anatoly";
final Calendar birthday = ...;
String.format("%1's birthday is on %2$tm %2$te,%2$tY", name, birthday);
如果您希望它与PreparedStatement
更相似,请在此基础上创建自己的包装类:
public class PreparedString {
final private String format;
public PreparedString(String format) {
this.format = format;
}
public String getString(Object... args) {
return String.format(format, args);
}
}
答案 3 :(得分:0)
Formatter对此非常有用。快捷方式是String.format(),如前所述
请参阅: http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax