使用Google Guava有String实用程序可以轻松替换字符串字段,如下所示:
String query = mydb..sp_mySP ${userId}, ${groupId}, ${someOtherField}
我可以做这样的事情:
StringUtil.setString(query)
.setField("userId", "123")
.setField("groupId", "456")
.setField("someOtherField", "12-12-12");
然后生成的String将是:
mydb..sp_mySP 123, 456, 12-12-12
当然,在操作之前设置字符串字段模式如${<field>}
...
无论如何,这是我的方法:
public class StringUtil {
public class FieldModifier {
private String s;
public FieldModifier(String s){
this.s = s;
}
public FieldModifier setField(String fieldName, Object fieldValue){
String value = String.valueOf(fieldValue);
s = modifyField(s, fieldName, value);
return new FieldModifier(s);
}
public String get() {
return s;
}
private String modifyField(String s, String fieldName, String fieldValue){
String modified = "";
return modified;
}
}
public FieldModifier parse(String s){
FieldModifier fm = new FieldModifier(s);
return fm;
}
}
所以在这种情况下,我只需要将实际代码放在modifyField
函数中,它将以简单的方式修改字符串。另外,如果有一种方法可以使parse
函数保持静态,那么我可以StringUtil.parse(...)
而不执行new StringUtil().parse(...)
这看起来不太好。
答案 0 :(得分:4)
是的,String.format()。
String s = "Hey %s! Cool %s, right?";
System.out.println(String.format(s, "xybrek", "feature"));
答案 1 :(得分:3)
番石榴没有这样的东西。您可以查看可以执行字符串模板化的SpEL(Spring表达式语言)或其他模板框架,例如Velocity或Freemarker。
答案 2 :(得分:2)