1
我想用值替換字符串中的命名參數,就像使用Python的%運算符一樣。 Spring支持與NamedParameterUtils所需的功能非常相似的功能,但由於某些原因,它與Jdbc緊密耦合,並用問號替換了這些帶參數的參數。類似Spring的NamedParameterUtils用於常規字符串處理的工具?
所以,如果我想要做":a is :b" % {"a":"Java", "b":"Beautiful"}
我必須訴諸使用像Velocity這樣的重炮嗎?還是我缺少一些簡單的東西?
更新:使用梅德代碼寫我自己的簡單版本:
public static String formatSqlWithNamedParams(String sqlTemplate, Map<String, Object> params){
StringWriter writer = new StringWriter();
Pattern var = Pattern.compile("\\$\\{\\s*([\\w\\[\\]\\(\\)\\.]+)\\s*\\}");
Matcher match = var.matcher(sqlTemplate);
int offset = 0;
while (match.find()) {
writer.write(sqlTemplate.substring(offset, match.start()));
String key = match.group(1);
Object val = params.get(key);
writer.write(val.toString());
offset = match.end();
}
writer.write(sqlTemplate.substring(offset));
return writer.toString();
}
您特別需要命名參數,'printf'-style或'{0}是{1}'不會削減它? – serg 2011-06-06 15:31:35
nope,因爲我正在構造一些相當大的字符串,並且'{0}'樣式佔位符在具有許多參數的長字符串中變得非常混亂和混亂。 – ihadanny 2011-06-07 06:23:43