Velocity转义字符详解


Java中Velocity的转义字符通常用'\'进行修饰转义。在Velocity中,$具有特殊含义,若希望$作为普通的字符来处理,应采用\$的形式。

普通转义

//如果$foo未定义过
$foo              输出:$foo
\$foo             输出:\$foo
\\$foo            输出:\\$foo
\\\$foo           输出:\\\$foo

//如果$foo已经定义过
#set($foo="bar")
$foo              输出:bar
\$foo             输出:$foo
\\$foo            输出:\bar
\\\$foo           输出:\$foo

单引号和双引号进行转义

1.最外层是用单引号包围时,双引号直接使用就可以了,两个连续的单引号表示一个单引号

#set($var2 = 'A"B''C') --> $var2 的值为 A"B'C

2.最外层是用双引号包围时,单引号直接使用就可以了,两个连续的双引号表示一个双引号

#set($var2 = "A""B'C") --> $var2 的值为 A"B'C

3.字符串中的变量需要被解析,则最外层用双引号包围

#set($var2 = "A""B'C_$var1") --> $var2 的值为 A"B'C_test1

4.字符串中的变量不能被解析,则最外层用单引号包围

#set($var2 = 'A"B''C_$var1') --> $var2 的值为 A"B'C__$var1

总结

1.一般情况下“\”并不能对引号进行转义,“\”只对 $、# 转义有效。

2.velocity中\解析为\,此时\是普通字符,没有转义的含义。