[英]Replace a variable in a String
I am looking for a String Utils so that I can do something like this. 我正在寻找一个String Utils,以便我可以做这样的事情。
String input = "this is the $var on $date"
someUtil.evaluate(input, [var: "end", date: "11/11/11"])
output : this is the end on 11/11/11. 输出:这是11/11/11的结尾。
someUtil.evaluate(input, [var: "start", date: "10/10/10"])
output : this is the start on 10/10/10. 输出:这是从10/10/10开始。
Use standard java MessageFormat
, it is quite powerfull (read its class level JavaDoc) 使用标准的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});
Do you really need as incoming parameter that "array" ? 您是否真的需要“数组”作为传入参数? If not, that you can implement as easy as it is ..
如果没有,那么您可以实现它的简单..
private static String replaceVarByVal(String toReplace,String var,String val){
return toReplace.replace(var, val);
}
(You can easy modify that to incom params arrays, but better should be eg. Map- key variable, value new value of the "placeholder" - $var) (您可以轻松地将其修改为incom params数组,但更好的方法应该是例如Map-key变量,“占位符”的新值-$ var)
Arrays variant: 数组变体:
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;
}
Better variant with map: 地图的更好变体:
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;
}
(And that can be used universally for anything) (并且可以普遍用于任何事物)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.