内置函数

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格式文本输出,下面这些:

 <替换为&lt;

 >替换为&gt;

 &替换为&amp;

 "替换为&quot;

 '替换为&apos;

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")}
 搜索开始的地方可以由第二个可选的参数来确定。如果在同一个序列中相同的项可以多次出现时,这是很有用的。第二个参数的数值没有什么限制:如果它是负数,那么就和它是零的效果一样,而如果它是比序列长度还大的数,那么就和它是序列长度值的效果一样。小数值会被切成整数。
7.5seq_last_index_of 最后一次出现..的位置
7.6reverse 反转序列
7.7size 序列大小
7.8sort 排序
<#assign ls = ["whale", "Barbara", "zeppelin", "aardvark", "beetroot"]?sort>
<#list ls as i>${i} </#list>
 8. eval 求值
这个函数求一个作为FTL表达式的字符串的值。比如"1+2"?eval返回数字3。
9. has_content 是否有内容
如果变量(不是Java的null)存在而且不是“空”就返回true,否则返回false
10.is_... 判断函数族
is_string
字符串
is_number
数字
is_boolean
布尔值
is_date
日期(所有类型:仅日期,仅时间和时间日期)
is_method
方法
is_transform
变换
is_macro
is_hash
哈希表
is_hash_ex
扩展的哈希表(也就是支持?keys和?values)
is_sequence
序列
is_collection
集合
is_enumerable
序列或集合
is_indexable
序列
is_directive
指令的类型(比如宏,或TemplateDirectiveModel,TemplateTransformModel等)
is_node
节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值