velocity 单引号和双引号转义
来源:互联网 发布:刘备是汉室宗亲吗 知乎 编辑:程序博客网 时间:2024/05/01 11:52
velocity 单引号和双引号转义
默认情况下, velocity 通过 #set($var=...) 为变量赋值时,如果等号右侧是用双引号引起来的字符串,则会对字符串中的变量进行解析,如:
#set($var1 = "test1")
#set($var2 = "test2_$var1")
$var2 将输出 test2_test1
如果是用单引号引起来的,则不会对引号中的变量进行解析,而是直接原样输出,上面的 $var2 将输出test2_$var1
网上有资料说“默认情况下,使用单引号来渲染未解析文本在Velocity是有效的。这种特征可以通过编辑velocity.properties 中的 stringliterals.interpolate=false来改变。” 但自己经过测试后,发现该设置并没生效(不管值为 false 还是 true,效果都是一样的)。
现在有这么一种情况,我要赋给 $var2 的值既有单引号,又有双引号,还有需要进行解析的变量,这时候应该怎么处理呢?尝试着使用“\”对单引号和双引号进行转义,发现“\”并不能对引号进行转义,“\”只对 $、# 生效。
#set($var2 = "test'2"_$var1") --> org.apache.velocity.runtime.parser.ParseException: Encountered "_" at line 6, column 22.
#set($var2 = "test'2\"_$var1") --> org.apache.velocity.runtime.parser.ParseException: Encountered "_" at line 7, column 23.
#set($var2 = 'test'2"_$var1') --> org.apache.velocity.runtime.parser.ParseException: Encountered "2" at line 8, column 20.
#set($var2 = 'test\'2"_$var1') --> org.apache.velocity.runtime.parser.ParseException: Encountered "2" at line 9, column 21.
通过以上四种尝试均未达到预期效果(期望值是 $var2 的输出结果为 test'2"_test1)
仍然没有达到效果,所以继续进行各种尝试,最终终于知道怎么对单引号和双引号进行转义了:
(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
- velocity 单引号和双引号转义
- velocity 单引号和双引号转义
- php中的单引号、双引号和转义字符
- php中的单引号、双引号和转义字符
- php中的单引号、双引号和转义字符
- php中的单引号、双引号和转义字符
- php中的单引号、双引号和转义字符
- php中的单引号、双引号和转义字符
- 8. 转义字符 (单引号,双引号和 "\ ")
- php中的单引号、双引号和转义字符
- PHP中单引号、双引号和转义字符
- 单引号,双引号,转义
- html单引号,双引号转义
- html单引号,双引号转义
- js 单引号 双引号转义
- Ruby中关于单引号和双引号的转义
- Java--如何输出双引号、单引号和转义字符
- php中的单引号、双引号和转义字符详解
- A mid-summer night’s dream uva+二分/中位数
- poj 1325 二分图最小点覆盖(机器模式的选择)
- sizeof对字符数组字符串使用
- eclipse最新dropins安装插件
- linux驱动开发学习路线
- velocity 单引号和双引号转义
- poj 1042 贪心
- Singleton 单例模式
- poj 3281 最大流(牛吃喝的最大数量)
- 深度搜索C++对象模型1-关于对象
- MVC小计
- 多分支结构——菜单,今晚吃什么
- Add Two Numbers LeetCode Java
- poj 1256 全排列(含有重复字母)