Java 替换字符串中的变量

Java 替换字符串中的变量,java,Java,我正在寻找一个字符串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的开始。使用标准java,它非常强大(阅读它的类级JavaD

我正在寻找一个字符串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的开始。

使用标准java,它非常强大(阅读它的类级JavaDoc)


您真的需要将“数组”作为传入参数吗?如果没有,您可以尽可能简单地实现

private static String replaceVarByVal(String toReplace,String var,String val){
        return toReplace.replace(var, val);
}
(您可以轻松地将其修改为incom params数组,但最好是Map-key变量,value“placeholder”-$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-to-replace,String[]var,String[]val){
字符串toRet=toReplace;
//阵列逻辑问题
如果(变量长度!=变量长度){
返回null;
}否则{
对于(int i=0;i
更好的地图变体:

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;
}
private静态字符串replaceVarByVal(字符串替换,映射参数映射){
字符串toRet=toReplace;
对于(Map.Entry:paramValsMap.entrySet())
{
toRet=toRet.replace(entry.getKey(),entry.getValue());
}
返回托雷特;
}

(这可以普遍用于任何事情)

没有将spring类用于任何字符串操作。令人惊讶的是,StringUtils()有一个类。但即使他们建议使用apache公共API,您也可以使用Map和String.replaceFirst(regex,replacement)自己实现。为什么需要使用Spring实用程序?你不能用SimpleDataFormat吗?System.out.println(新的SimpleDataFormat(“yy/MM/dd”).格式(新的日期())@saurabh感谢apache common StrSubstitutor解决了这个问题
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;
}