FreeMarker小记(一)
-
直接指定值
-
字符串: “Foo” 或者 ‘Foo’ 或者 “It’s “quoted”” 或者 ‘It’s “quoted”’ 或者 r"C:\raw\string"
数字: 123.45
布尔值: true, false
序列: [“foo”, “bar”, 123.45]; 值域: 0…9, 0…<10 (或 0…!10), 0…
哈希表: {“name”:“green mouse”, “price”:150}
检索变量
-
顶层变量: user
从哈希表中检索数据: user.name, user[“name”]
从序列中检索数据: products[5]
特殊变量: .main
字符串操作
-
插值(或连接): “Hello ${user}!” (或 "Hello " + user + “!”)
获取一个字符: name[0]
字符串切分: 包含结尾: name[0…4],不包含结尾: name[0…<5],基于长度(宽容处理): name[0…*5],去除开头: name[5…]
序列操作
-
连接: users + [“guest”]
序列切分:包含结尾: products[20…29], 不包含结尾: products[20…<30],基于长度(宽容处理): products[20…*10],去除开头: products[20…]
哈希表操作
- 连接: passwords + { “joe”: “secret42” } 其他操作
-
算术运算: (x * 1.5 + 10) / 2 - y % 100
比较运算: x == y, x != y, x < y, x > y, x >= y, x <= y, x lt y, x lte y, x gt y, x gte y, 等等。。。。。。
逻辑操作: !registered && (firstVisit || fromEurope)
内建函数: name?upper_case, path?ensure_starts_with(’/’)
方法调用: repeat(“What”, 3)
处理不存在的值:
-
默认值: name!“unknown” 或者 (user.name)!“unknown” 或者 name! 或者 (user.name)!
检测不存在的值: name?? 或者 (user.name)??
赋值操作: =, +=, -=, *=, /=, %=, ++, –
转义序列 | 含义 |
---|---|
" | 引号 (u0022) |
’ | 单引号(又称为撇号) (u0027) |
{ | 起始花括号:{ |
\ | 反斜杠 (u005C) |
\n | 换行符 (u000A) |
\r | 回车 (u000D) |
\t | 水平制表符(又称为tab) (u0009) |
\b | 退格 (u0008) |
\f | 换页 (u000C) |
\l | 小于号:< |
\g | 大于号:> |
\a | &符:& |
\xCode | 字符的16进制 Unicode 码 (UCS 码) |