1

我正在尝试将字符串模板与自定义分隔符一起使用。

此代码片段:

new ST("Hello @what@", '@', '@').add("what", "world").render()

throws org.stringtemplate.v4.compiler.STException,所以我显然做错了。

如果我将其更改为new ST("Hello $what$", '$', '$'),它可以工作。为什么@不工作?

编辑-我尝试了除$and之外的其他字符@,但$到目前为止什么都没有。这是怎么回事?

4

2 回答 2

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;
}
于 2017-08-08T09:36:45.517 回答
-1

我相信他们必须是不同的角色;开始/停止。三

于 2011-11-27T16:54:41.970 回答