freemarker 内置函数

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在我们应用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。以上方法在我的另一篇博客Freemarker中如何遍历List有详细的应用,感兴趣的朋友可以参考。

 

二、          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>

 

三、          操作字符串函数

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.                     用于将数字转换为字符串

${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

 

转载于:https://my.oschina.net/heguangdong/blog/74349

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业学习频道,欢迎关注数锐学堂

数锐学堂简介&#xff1a;致力于深耕数学领域的科普学习、竞赛、机器学习等算法技能应用优质课程&#xff0c;精心打造一站式的数学垂直领域教育服务。长按二维码可以关注如果识别二维码有问题请搜索微信号&#xff1a;supermodeling

在非容器(集群)环境下运行dapr

作者&#xff1a;李俱顺原文&#xff1a;https://www.4async.com/2021/03/2021-03-11-running-dapr-without-container/前一段时间一直关注的dapr正式发布了v1.0版本(实际上本文发布时还更新了v1.0.1)&#xff0c;代表dapr在某些程度上进入稳定状态&#xff0c;可以尝试在实际中…

【Silverlight5矢量打印】如何用C#代码检测打印机和驱动是否支持PostScript

Silverlight5支持PostScript矢量打印&#xff0c;矢量打印相比于位图打印速度更快&#xff0c;生成的打印文件更小。SL5默认会采用PS矢量打印&#xff0c;如果打印机不支持&#xff0c;自动切换到位图打印。 虽然微软SL打印组认为PS已经相当普遍&#xff0c;但我想大多数打印机…

用魔法打开科学,孩子惊叫连连,想不爱科学都难!

随着当今科技快速发展&#xff0c;和大家对于人工智能快速崛起的担忧&#xff0c;父母们对于孩子科学能力的培养&#xff0c;已经紧锣密鼓的提上了早教日程。看看近两年早教市场里火爆的课程&#xff0c;“少儿编程”、“儿童机器人教育”、“儿童STEAM课程”等等便是印证了这一…

java反射 获取局部变量_Java反射:如何获取变量的名称?

呼唤远方如果您使用以下的调试信息进行编译&#xff1a;javac -g)&#xff0c;局部变量的名称保存在.class文件中。例如&#xff0c;以这个简单的类为例&#xff1a;class TestLocalVarNames {public String aMethod(int arg) {String local1 "a string";StringBuil…

ML.NET Cookbook:(1)如何从文本文件加载数据?

TextLoader 用于从文本文件加载数据。您需要指定什么是数据列、它们的类型以及在文本文件中的位置。请注意&#xff0c;完全加载文件的某些列或多次加载同一列是完全可以接受的。示例文件[1]:Label Workclass education marital-status 0 Private 11th Never-married 0 Private…

svn服务端及客户端搭建和使用(三)

接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等.添加文件在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态,如图:这时候,你需要告知TortoiseSVN你的操作,如图:加入以后,你的文件会变成这个状态,如图:这时…

Python的小宇宙,怎么样才能发挥出来?

随着科技的发展&#xff0c;计算机对人类的生产活动和社会活动产生了极为重要的影响&#xff0c;同时以强大的生命力飞速发展着。目前计算机正广泛用于社会各个领域&#xff0c;并朝着微型化、网络化、智能化和巨型化的方向前进。而随着计算机飞速发展的背后&#xff0c;人工智…

java生成tga图片_Java TGA加载器

我们使用从一些开源项目复制的这个类来读取TGA文件.它真的很老了.它只能处理具有最基本编码的Targa文件.试试看.public class TargaReader{public static Image getImage(String fileName) throws IOException{File f new File(fileName);byte[] buf new byte[(int)f.length(…

面试腾讯,过了~

大概需要10分钟。原谅下&#xff0c;又标题党了&#xff0c;不过这篇会提到我应届面试腾讯的经历。前两天在朋友圈发了一条动态&#xff1a;要做读者朋友的指路小火苗&#xff0c;很多人在状态下留言&#xff1a;为啥不是指路明灯&#xff1f;为啥不是小油灯&#xff1f;原因很…

传说中理科生看到会沉默、文科生看到会流泪的【程序员文史综合题目】

全世界只有3.14 % 的人关注了数据与算法之美一、单选题1、以下谁是二进制思想的最早提出者&#xff1f;a&#xff0c;伏羲&#xff1b;b&#xff0c;姬昌&#xff1b;c&#xff0c;莱布尼茨&#xff1b;d&#xff0c;柏拉图。2、以下哪个概念和公孙龙的《指物论》中的“指”字含…

智能制造建设方案

随着新一轮工业革命的发展&#xff0c;工业转型的呼声日渐高涨。面对信息技术和工业技术的革新浪潮&#xff0c;美国人出台了先进制造业回流计划&#xff0c;提出了工业互联网战略&#xff0c;德国人提出了工业4.0战略&#xff0c;中国加紧推进两化深度融合&#xff0c;并发布了…

SharePoint 常见问题

http://social.microsoft.com/Forums/zh-CN/sharepointportalserverzhchs/thread/3342e49b-1184-4ff2-810c-367b473ff9db转载于:https://www.cnblogs.com/tjsunyf/archive/2012/08/27/2658635.html

深入LINQ | 动态构建LINQ表达式

原文&#xff1a;bit.ly/3fwlKQJ作者&#xff1a;Jeremy Likness译者&#xff1a;精致码农-王亮LINQ 是 Language Integrated Query&#xff08;语言集成查询&#xff09;的缩写&#xff0c;是我最喜欢的 .NET 和 C# 技术之一。使用 LINQ&#xff0c;开发者可以直接在强类型代码…

java查找字符的方法_Java字符串查找(3种方法)

在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式&#xff1a;一种是在字符串中获取匹配字符(串)的索引值&#xff0c;另一种是在字符串中获取指定索引位置的字符。根据字符查找String 类的 indexOf() 方法和 lastlndexOf() 方法用于在字符串中获取匹…

Oracle迁移索引

第一条&#xff0c;clob的索引别乱动 ALTER TABLE table_a MOVE TABLESPACE Tbs_tb LOB (ATTRIBUTE) STORE AS(TABLESPACE tbs_lob); 快速指南&#xff1a; alter index schema.index_1 rebuild tablespace TBS_IDX; 批量的话可以写个sql&#xff0c;例如&#xff1a; select a…

2018 Kaggle 报告:在技术领域,女性从业者持续减少,00后开始展露头脚

全世界只有3.14 % 的人关注了数据与算法之美就在上个月&#xff0c;Kaggle社区发布了《2018 Kaggle机器学习和数据科学调研》&#xff0c;调研结果显示&#xff1a;在技术领域&#xff0c;女性从业者持续减少&#xff1b;00后开始登上从业舞台&#xff1b;而且&#xff0c;23%受…

Nuget Package 支持打包 ReadMe 了

Nuget Package 支持打包 ReadMe 了Intro在 3月份&#xff0c;我们在NuGet生态系统状态上发布了一个博客&#xff0c;其中讨论了过去六个月以来从数百名客户那里获得的见解。客户在我们的调查中发现的最大问题之一是&#xff0c;“大多数软件包的文档不足”&#xff0c;可以从Nu…

秒级定时计划

碰到一道面试题&#xff0c;每个10秒打印一次系统时间&#xff0c;投机取巧&#xff0c;弄成功了。$ for i in seq 1 10;do date;sleep 10 ;done 2012年 08月 29日 星期三 08:51:32 CST 2012年 08月 29日 星期三 08:51:42 CST 2012年 08月 29日 星期三 08:51:52 CST 2012年 08月…

幸运从来都只偏爱有准备的人——大龄码农的慌张日记

很多人将一件事的成功归结于能力&#xff0c;也有很多人将其归结为运气。今天要在这里跟大家分享的朋友名叫Leon&#xff0c;他在纽村政府注重本地人就业的大环境下&#xff0c;用时1个月以配偶工签的身份成功拿到大厂offer。接到我们的邀稿后&#xff0c;他花了很多心思写了这…