StringBuilder就像PreparedStatement一样

时间:2014-07-24 08:20:32

标签: java stringbuilder

有没有办法创建像我们创建PreparedStatements的字符串?我的意思是用'?'创建整个字符串我需要稍后插入值,然后根据条件插入此值。在StringBuilder中,我没有找到这样的功能,只能通过offset附加或插入。

4 个答案:

答案 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)方法可以满足您的需求。
只需为%sString表示整数格式的占位符(包括%d),long表示Floats(包括%f })。有关格式的完整文档,请参阅here 例如:

double

答案 2 :(得分:2)

查看String.format()

一般的想法是,您提供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