使用VelocityTemplate将值替换为值

时间:2017-01-22 17:24:29

标签: java replace velocity

我是Java Velocity模板的新手。我有一个字符串,它将有一些数字占位符/变量。我需要用相应的值替换它们。我怎么能在java中实现这个?

代码示例:

String templateString = "Replacing $0 with its value.";
VelocityContext context = new VelocityContext();
context.put("0", "Sample value");

StringWriter output = new StringWriter();
Velocity.evaluate(context, output, "log or null", templateString);

System.out.println("output: " + output);

上面的代码没有用" 示例值"替换$ 0变量,但是当我将一个字符串作为占位符/变量而不是$ 0时它起作用了。是否有任何变通方法可以用它的值替换$ 0?感谢你的帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

Velocity本身没有解决方法:解析器不允许引用名称以数字开头。

所以你必须预先处理模板,例如:

templateString = templateString.replaceAll("\\$(\\d+)","\\$_$1");
context.put("_0", "Sample value");
...