我正在寻找一个String Utils,以便我可以做这样的事情。
String input = "this is the $var on $date"
someUtil.evaluate(input, [var: "end", date: "11/11/11"])
输出:这是11/11/11的结束。
someUtil.evaluate(input, [var: "start", date: "10/10/10"])
输出:这是10/10/10的开始。
答案 0 :(得分:5)
使用标准java MessageFormat
,它非常强大(读取它的类级别JavaDoc)
Date endDate = new GregorialCalendar(2011, Calendar.NOVEMBER, 11).getTime();
...
MessageFormat.format(
"this is the {0} on {1,date,yy/MM/dd}",
new Object[]{"end", endDate});
答案 1 :(得分:0)
你真的需要作为传入参数" array" ?如果没有,那么你可以轻松实现..
private static String replaceVarByVal(String toReplace,String var,String val){
return toReplace.replace(var, val);
}
(你可以很容易地修改它以引入params数组,但更好的应该是例如.Map-key变量,值"占位符" - $ var)的新值
阵列变体:
private static String replaceVarByVal(String toReplace,String[] var,String[] val){
String toRet = toReplace;
//arrays logic problem
if(var.length != val.length){
return null;
}else{
for (int i = 0; i < var.length; i++) {
toRet = toRet.replace(var[i], val[i]);
}
}
return toRet;
}
更好的地图变体:
private static String replaceVarByVal(String toReplace,Map<String, String> paramValsMap){
String toRet = toReplace;
for (Map.Entry<String, String> entry : paramValsMap.entrySet())
{
toRet=toRet.replace(entry.getKey(), entry.getValue());
}
return toRet;
}
(这可以普遍用于任何事情)