原文链接:http://www.iteye.com/topic/908500

在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Java 一样有相关的类及方法。在本文当中,我将向大家详细的介绍Freemarke 的内置函数及用法,以便能帮助大家更熟练的应用Freemarker 完成项目开发。

一、  Sequence 的内置函数

1.     sequence?first 返回sequence 的第一个值。

2.     sequence?last  返回sequence 的最后一个值。

3.     sequence?reverse 将sequence 的现有顺序反转,即倒序排序

4.     sequence?size    返回sequence 的大小

5.     sequence?sort    将sequence 中的对象转化为字符串后顺序排序

6.     sequence?sort_by(value) 按sequence 中对象的属性value 进行排序

注意:Sequence 不能为null 。

二、          Hash 的内置函数

1.                     hash?keys 返回hash 里的所有key, 返回结果为sequence

2.                     hash?values 返回hash 里的所有value, 返回结果为sequence

例如:

<#assign user={“name”: “hailang”, “sex”: “man”}>

<#assign keys=user?keys>

<#list keys as key>

${key}=${user[key]}

</#list>

<#if promo??> //判断promo是否存在

<#list promo as pro>

<#if pro.content?length gte 10>

${pro.content[0..10]}...//截取输出文字的长度

<#else>

${pro.content}

</#if>

</#list>

</#if>

三、          操作字符串函数

1.                     substring (start,end )从一个字符串中截取子串

start: 截取子串开始的索引,start 必须大于等于0 ,小于等于end

end: 截取子串的长度,end 必须大于等于0 ,小于等于字符串长度,如果省略该参数,默认为字符串长度。

例子:

${‘str’?substring(0)} à 结果为str

${‘str’?substring(1)} à 结果为tr

${‘str’?substring(2)} à 结果为r

${‘str’?substring(3)} à 结果为

${‘str’?substring(0,0)} à 结果为

${‘str’?substring(0,1)} à 结果为s

${‘str’?substring(0,2)} à 结果为st

${‘str’?substring(0,3)} à 结果为str

2.                     cap_first 将字符串中的第一个单词的首字母变为大写。

${‘str’ ?cap_first} à 结果为Str

3.                     uncap_first 将字符串中的第一个单词的首字母变为小写。

${‘Str’ ?cap_first} à 结果为str

4.                     capitalize 将字符串中的所有单词的首字母变为大写

${‘str’ ? capitalize} à 结果为STR

5.                     date,time ,datetime 将字符串转换为日期

例如:

<#assign date1=”2009-10-12”?date(“yyyy-MM-dd”)>

<#assign date2=”9:28:20”?time(“HH:mm:ss”)>

<#assign date3=” 2009-10-12 9:28:20”?time(“HH:mm:ss”)>

${date1} à 结果为2009-10-12

${date2} à 结果为9:28:20

${date3} à 结果为2009-10-12 9:28:20

注意:如果指定的字符串格式不正确将引发错误。

6.                     ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。

${ “string”?ends_with(“ing”)?string} 返回结果为true

注意:布尔值必须转换为字符串才能输出

7.                     html 用于将字符串中的< 、> 、& 和“替换为对应得&lt;&gt;&quot:&amp

8.                     index_of (substring,start )在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1 。

Start 参数用于指定从字符串的那个索引处开始搜索,start 为数字值。

如果start 大于字符串长度,则start 取值等于字符串长度,如果start 小于0 , 则start 取值为0 。

${“string”?index_of(“in”) à 结果为3

${“string”?index_of(“ab”) à 结果为-1

9.                     length 返回字符串的长度 ${“string”?length} à 结果为6

10.                  lower_case 将字符串转为小写

${“STRING”?lower_case} à 结果为string

11.                  upper_case 将字符串转为大写

${“string”?upper_case} à 结果为STRING

12.                  contains 判断字符中是否包含某个子串。返回布尔值

${“string”?contains(“ing”)?string} à 结果为true

注意:布尔值必须转换为字符串才能输出

13.                  number 将字符串转换为数字

${“111.11”?number} à 结果为111.11

14.                  replace 用于将字符串中的一部分从左到右替换为另外的字符串。

${“strabg”?replace(“ab”,”in”)} à 结果为string

15.                    split 使用指定的分隔符将一个字符串拆分为一组字符串

<#list “This|is|split”?split(“|”) as s>

${s}

</#list>

结果为:

This

is

split

16.                  trim 删除字符串首尾空格 ${“  String ”?trim} à 结果为String

四、          操作数字

1.                     c 用于将数字转换为字符串

${123?c} à 结果为123

2.                     string 用于将数字转换为字符串

Freemarker 中预订义了三种数字格式:number,currency (货币)和percent( 百分比) 其中number 为默认的数字格式转换

例如:

<#assign tempNum=20>

${tempNum}

${tempNum?string.number} 或${tempNum?string(“number”)} à 结果为20

${tempNum?string.currency} 或${tempNum?string(“currency”)} à 结果为¥20.00

${tempNum?string. percent} 或${tempNum?string(“percent”)} à 结果为2,000%

五、    操作布尔值

string 用于将布尔值转换为字符串输出

true 转为“true” ,false 转换为“false”

foo?string(“yes”,”no”) 如果布尔值是true, 那么返回“yes ”, 否则返回no

freemarker内置函数和用法的更多相关文章

  1. Freemarker 内置函数 数字、字符串、日期格式化用法介绍

    在用FreeMarker过程中,感觉FreeMarker的字符串,日期,集合等处理能力还是很强大的,上网搜了一些资料,整理如下,以便能帮助大家更熟练的应用Freemarker完成项目开发. 一.Seq ...

  2. [SQL]SUTFF内置函数的用法 (删除指定长度的字符并在指定的起始点插入另一组字符)

    STUFF 删除指定长度的字符并在指定的起始点插入另一组字符. 语法 STUFF ( character_expression , start , length , character_express ...

  3. enumerate next eval reload 内置函数的用法

    enumerate next eval reload 内置函数的用法 #enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用 ...

  4. Python内置函数reversed()用法分析

    Python内置函数reversed()用法分析 这篇文章主要介绍了Python内置函数reversed()用法,结合实例形式分析了reversed()函数的功能及针对序列元素相关操作技巧与使用注意事 ...

  5. $Python常用内置函数典型用法

    Python中有许多功能丰富的内置函数,本文基于Python 2.7,就常用的一些函数的典型用法做一些积累,不断更新中. sorted函数的三种用法 # coding:utf-8 # sorted函数 ...

  6. <转>FreeMarker内置函数

    一. Sequence的内置函数1. sequence?first 返回sequence的第一个值.2. sequence?last 返回sequence的最后一个值.3. sequence?reve ...

  7. 面向对象编程之super内置函数的用法

    先来看一段代码: 定义一个名叫People的父类,又定义了一个叫Teacher的老师类和一个叫Student的学生类 来继承People的类,并根据这两个子类实例化出两个对象s1和t1. class ...

  8. [SQL]SUTFF内置函数的用法

    STUFF 删除指定长度的字符并在指定的起始点插入另一组字符. 语法 STUFF ( character_expression , start , length , character_express ...

  9. python内置函数getattr用法

    class Tests(object):    #定义类     aaa = '10'          #定义变量       def test(self):     #定义类的方法test     ...

随机推荐

  1. hosts manager——hosts配置管理工具

    引言 做web开发相关的经常会用到hosts修改的功能,各个平台好像都有hosts 配置GUI(据我所知windows有.MAC OX也有),但是命令行配置hosts的好像还没有,命令行配置的话有几个 ...

  2. 查找树ADT——二叉搜索树

    在以下讨论中,虽然任意复杂的关键字都是允许的,但为了简单起见,假设它们都是整数,并且所有的关键字是互异的. 总概   使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有关键字值小于 ...

  3. LogStash配置、使用(三)

    LogStash配置 官方文档:https://www.elastic.co/guide/en/logstash/current/index.html 查看yum安装路径 rpm -ql logsta ...

  4. Ubuntu 14.04 LTS 安装 spark 1.6.0 (伪分布式)-26号开始

    需要下载的软件: 1.hadoop-2.6.4.tar.gz 下载网址:http://hadoop.apache.org/releases.html 2.scala-2.11.7.tgz 下载网址:h ...

  5. 树莓派系统介绍:DIetPi

    项目主页:http://fuzon.co.uk/phpbb/viewtopic.php?f=8&t=6 当前版本:V34(15年4月16日发布) DietPi是国外一个基于Raspbian的精 ...

  6. jquery + header

    官网上搜索headers 基本用法(直接用下楼上的代码了) $.ajax({ //请求类型,这里为POST type: 'POST', //你要请求的api的URL url: url , //是否使用 ...

  7. Java正则认识

    一.为什么要有正则? 方便的对数据进行匹配 执行复杂的字符串验证.拆分.替换功能 举例:判断一个字符串是否由数字组成.(有以下两种方法对比) 不使用正则 String str = "1234 ...

  8. jQuery知识点一 each()和toggleClass()

    jQuery的一些东东比较容易忘,所以在这里整理一下... ... 1. each (1) $(selector).each(function(index,element))         inde ...

  9. [UML]UML系列——类图class的关联关系(聚合、组合)

    关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...

  10. 在ie浏览器,360浏览器下,margin:0 auto;不居中的原因

    转自 http://blog.sina.com.cn/s/blog_6eef6bf60100nn4m.html margin:0 auto:不居中可能有以下两个的原因 没有设置宽度 看看上面的代码,根 ...