我正在尝试将字符串模板与自定义分隔符一起使用。
此代码段:
new ST("Hello @what@", '@', '@').add("what", "world").render()
抛出org.stringtemplate.v4.compiler.STException
,所以我显然做错了。
如果我将其更改为new ST("Hello $what$", '$', '$')
,则可以。为什么@
无效?
修改 - 我尝试了$
和@
以外的其他字符,除了$
之外什么都没有。发生了什么事?
答案 0 :(得分:0)
'$','<'等字符对于StringTemplate是特殊的,需要进行转义。
您可以创建一个转义工具,如:
ST st = new ST(StringUtility.escapeStringTemplate(str));
//utility function
public static String escapeStringTemplate(String str){
String result = str;
if (result.contains("<")) {
result = result.replace("<", "\\<");
}
if (result.contains("$")) {
result = result.replace("$", "\\$");
}
return result;
}
答案 1 :(得分:-1)
我认为他们必须是不同的角色;启动/停止。 叔