1.hashmap
内建函数values和keys来枚举哈希表中的子变量
1.1keys 键的集合
<#assign h = {"name":"mouse", "price":50}>
<#assign keys = h?keys>
<#list keys as key>${key} = ${h[key]}; </#list>
1.2values值的集合
2.new
使用内建函数new将指令放到一个FTL库
<#assign upper = "com.example.UpperDirective"?new()>
3 处理字符串的内建函数
3.1 substring 取子串
exp?substring(from, toExclusive),也可以作为exp?substring(from)调用
3.2 cap_first 首字母大写
${" green mouse"?cap_first}
${"GreEN mouse"?cap_first}
3.3uncap_first 首字母小写
3.4capitalize 首字母大写
字符串的所有单词首字母都大写
${" green mouse"?capitalize}
${"GreEN mouse"?capitalize}
3.5chop_linebreak 切断换行符
如果在末尾没有换行符的字符串,那么可以换行,否则不改变字符串
3.6date,time,datetime 日期,时间,时间日期
<#assign test1 = "10/25/1995"?date("MM/dd/yyyy")>
<#assign test2 = "15:05:30"?time("HH:mm:ss")>
<#assign test3 = "1995-10-25 03:05 PM"?datetime("yyyy-MM-dd hh:mm a")>
${test1}
${test2}
${test3}
3.7ends_with 以…结尾
返回是否这个字符串以指定的子串结尾。比如"redhead"?ends_with("head")返回布尔值true。而且"head"?ends_with("head")也返回true。
3.8html HTML格式的转义文本
<input type=text name=user value="${user?html}">
3.9index_of 索引所在位置
3.10j_string Java语言规则的字符串转义
<#assign beanName = 'The "foo" bean.'>
String BEAN_NAME = "${beanName?j_string}";
3.11js_string JavaScript语言规则的字符串转义
<#assign user = "Big Joe's \"right hand\"">
<script>
alert("Welcome ${user?js_string}!");
</script>
3.12json_string JSON规则的字符串转义
3.13last_index_of 最后的索引所在位置
3.14length 字符串长度
3.15lower_case 小写形式
3.16left_pad 距左边
如果它仅仅用1个参数,那么它将在字符串的开始插入空白,直到整个串的长度达到参数指定的值。如果字符串的长度达到指定数值或者比指定的长度还长,那么就什么都不做了。
<#if "fxo"?matches("f.?o")>Matches.<#else>Does not match.</#if>
如果使用了两个参数,那么第一个参数表示的含义和你使用一个参数时的相同,第二个参数指定用什么东西来代替空白字符
[${""?left_pad(5, "-")}]
[${"a"?left_pad(5, "-")}]
3.17right_pad 距右边
3.18contains 包含
如果函数中的参数可以作为源字符串的子串,那么返回true
<#if "piceous"?contains("ice")>It contains "ice"</#if>
3.19matches 匹配
3.20number 数字格式
字符串转化为数字格式。这个数字必须是你在FTL中直接指定数值的格式。也就是说,它必须以本地独立的形式出现,小数的分隔符就是一个点。此外这个函数认识科学记数法。(比如"1.23E6","1.5e-8")。
如果这恶搞字符串不在恰当的格式,那么在你尝试访问这个函数时,错误会抛出并中止模板的处理。
3.21replace 替换
在源字符串中,用另外一个字符穿来替换原字符串中出现它的部分。它不处理词的边界。
${"this is a car acarus"?replace("car", "bulldozer")}
3.22rtf 富文本
字符串作为富文本(RTF 文本),也就是说,下列字符串:
\替换为\\
{替换为\{
}替换为\}
3.23url URL转义
在URL之后的字符串进行转义。这意味着,所有非US-ASCII的字符和保留的URL字符
${"this is a car acarus"?replace("car", "bulldozer")}
this is a bulldozer abulldozerus
${"aaaaa"?replace("aaa", "X")}
Xaa
将会被%XX形式来转义。例如:
3.24split 分割
它被用来根据另外一个字符串的出现将原字符串分割成字符串序列
3.25starts_with 以…开头
3.26trim 修整字符串
去掉字符串首尾的空格
3.27upper_case 大写形式
3.28xhtml XHTML格式
字符串作为XML格式文本输出,下面这些:
<替换为<
>替换为>
&替换为&
"替换为"
'替换为'
4.处理数字内建函数
4.1string(当用作是数值类型时) 数字转字符串
<#assign x=42>
${x}
${x?string} <#-- the same as ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
${x?string.computer}
4.2round,floor,ceiling 数字的舍入处理
5.处理日期的内建函数
5.1string(当用作日期值时)日期转字符串
${openingTime?string.short}
${openingTime?string.medium}
${openingTime?string.long}
${openingTime?string.full}
5.2date,time,datetime (当使用日期值时)
这些内建函数用来指定日期变量中的哪些部分被使用:
date:仅仅年,月和日的部分被使用。
ime:仅仅时,分,秒和毫秒的部分被使用。
datetime:日期和时间量部分都使用
6.处理布尔值的内建函数
以foo?string:这样会使用代表true和false值的默认字符串来转换布尔值为字符串。默认情况,true被翻译为"true",而false被翻译为"false"
7.处理序列的内建函数
7.1 first 第一个子变量
序列的第一个子变量。如果序列为空,那么模板处理将会中止。
7.2 last 最后一个子变量
序列的最后一个子变量。如果序列为空,那么模板处理将会中止。
7.3seq_contanis 序列包含…
seq_前缀在这个内建函数中是需要的,用来和contains区分开。contains函数用来在字符串中查找子串(因为变量可以同时当作字符串和序列)。
辨别序列中是否包含指定值。它包含一个参数,就是来查找的值。
<#assign x = ["red", 16, "blue", "cyan"]>
"blue": ${x?seq_contains("blue")?string("yes", "no")}
"yellow": ${x?seq_contains("yellow")?string("yes", "no")}
16: ${x?seq_contains(16)?string("yes", "no")}
"16": ${x?seq_contains("16")?string("yes", "no")}
7.4seq_index_of 第一次出现…时的位置
seq_前缀在这个内建函数中是需要的,用来和index_of区分开。index_of函数用来在字符串中查找子串(因为变量可以同时当作字符串和序列)。
返回序列中第一次出现该值时的索引位置,如果序列不包含指定的值时返回-1
<#assign colors = ["red", "green", "blue"]>
${colors?seq_index_of("blue")}
${colors?seq_index_of("red")}
${colors?seq_index_of("purple")}
搜索开始的地方可以由第二个可选的参数来确定。如果在同一个序列中相同的项可以多次出现时,这是很有用的。第二个参数的数值没有什么限制:如果它是负数,那么就和它是零的效果一样,而如果它是比序列长度还大的数,那么就和它是序列长度值的效果一样。小数值会被切成整数。
<#assign ls = ["whale", "Barbara", "zeppelin", "aardvark", "beetroot"]?sort>
<#list ls as i>${i} </#list>
8.
eval 求值