freeMarker模板语言参考:内建函数参考⑧循环变量内建函数

循环变量内建函数

  • counter
  • has_next
  • index
  • is_even_item
  • is_first
  • is_last
  • is_odd_item
  • item_cycle
  • item_parity
  • item_parity_cap

这些内建函数只能用于list 和 items 指令 的循环变量 (也可以用于已经废弃的 foreach 指令)。 下面是一些说明(loopVar?index 在可以列表的值中进行迭代,返回从0开始的索引)

<#-- Note: x is a loop variable -->
<#list ['a', 'b', 'c'] as x>
  ${x}:${x?index}
</#list>
<#--  a:0 b:1 c:2  -->

当 list 指令不指定循环变量时, 这些内建函数就作用于 items 指令的循环变量

<#list ['a', 'b', 'c']>
  <ul>
   <#items as x>
     <li>${x}:${x?index}</li>
   </#items>
  </ul>
</#list>

在这里插入图片描述

循环变量内建函数仅仅用于循环变量的 名字, 
所以它们可以识别相关进行的迭代。它们不读取循环变量的 值。
因此,这就会有解析错误:
<#list ['a', 'b', 'c'] as x>
  <#assign y = x>
  ${y?index} <#-- ERROR: y isn't a loop variable -->
</#list>

1.counter
返回当前迭代(由循环变量名称识别)从1开始的索引(区分index从数组下标0开始)

<#list ['a', 'b', 'c'] as i>
  ${i?counter}: ${i}
  <br>
</#list>

在这里插入图片描述

<#list ['a', 'b', 'c'] as i>
  ${i?index}: ${i}
  <br>
</#list>

在这里插入图片描述
2.has_next:辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项
是否还有下一个。最后一个时返回false 其它的为true

<#list ['a', 'b', 'c'] as i>${i?has_next?c} </#list>

在这里插入图片描述

有时候,最后一项在显示的时候可能要做特殊处理,例如不加逗号
<#list ["hello","world"] as word>
    <span>${word}</span><#if word_has_next>,+</#if></#list>

在这里插入图片描述
[注意]:如果需要对该内建函数取反,请使用 var?is_last 来代替 !var?has_next, 因为它的可读性更强
当不得不显示介于每个迭代项(但不能在第一项之前或最后一项之后) 之间的一些内容时,可以使用 sep更方便

<#assign users = ["alice", "Tom", "Tomas", "prime", "jasper"]>
    <#list users as user>
        ${user}<#sep>,</#sep>
    </#list>

在这里插入图片描述
3.index:返回当前迭代(由循环变量名称识别)从0开始的索引

<#list ['a', 'b', 'c'] as i>
  ${i?index}: ${i}
</#list>

在这里插入图片描述
4.is_even_item: 辨别循环项是否是当前迭代(由循环变量名称识别)间隔1的奇数项
是否是偶数索引,第0 ,2 , 4…个时返回true

<#list ['a', 'b', 'c', 'd'] as i>${i?is_even_item?c} </#list>

在这里插入图片描述
5.is_odd_item: 辨别循环项是否是当前迭代(由循环变量名称识别)间隔1的偶数项
是否是奇数索引,第1,3 , 5…个时返回true

<#list ['a', 'b', 'c', 'd'] as i>${i?is_odd_item?c} </#list>

在这里插入图片描述
6.is_first: 辨别循环项是否是当前迭代(由循环变量名称识别)的第一项
第一个返回true

<#list ['a', 'b', 'c'] as i>${i?is_first?c} </#list>

在这里插入图片描述
7.is_last:辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项
最后一个返回true

<#list ['a', 'b', 'c'] as i>${i?is_last?c} </#list>

在这里插入图片描述
8.item_cycle:这是 item_parity 内建函数 更为通用的版本,这里可以指定何值来代替 “odd” 和 “even”。 它也允许多余两个值来循环
自定义循环索引

<#list ['a', 'b', 'c', 'd', 'e', 'f', 'g'] as i>
  <tr class="${i?item_cycle('row1', 'row2', 'row3')}">${i}</tr>
</#list>

在这里插入图片描述
一些细节:

  • 参数的个数至少是1个,没有上限。
  • 参数的类型是任意的,无需只是字符串
  • 如果需要"odd" 和 “even”,请使用 item_parity 内建函数 来代替

9.item_parity:基于当前迭代(由循环变量名称识别)间隔为1的索引的奇偶性, 返回字符串值 “odd” 或 “even”,是小写这通常用于表格中行间的颜色变换

<#list ['a', 'b', 'c', 'd'] as i>
  <tr class="${i?item_parity}Row">${i}</tr>
</#list>

在这里插入图片描述
10.item_parity_cap:基于当前迭代(由循环变量名称识别)间隔为1的索引的奇偶性, 返回字符串值 “Odd” 或 “Even” (请注意大写)

请使用 item_parity_cap 内建函数 来大写 “Odd” 和 “Even”。
请使用 item_cycle 内建函数 来指定自定义值,或多于两个值

<#list ['a', 'b', 'c', 'd'] as i>
  <tr class="row${i?item_parity_cap}">${i}</tr>
</#list>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeMarker 是一种模板语言,用于生成各种文本格式,如 HTML、XML、JSON 等。除了提供基本的语法和指令外,FreeMarker 还提供了许多内建函数,用于处理字符串、日期、数字等数据类型。下面是 FreeMarker 内建函数参考。 ## 字符串函数 ### length 语法:`${s?length}` 返回字符串 s 的长度。 ### trim 语法:`${s?trim}` 去除字符串 s 开头和结尾的空格。 ### upper_case 语法:`${s?upper_case}` 将字符串 s 转换为大写字母。 ### lower_case 语法:`${s?lower_case}` 将字符串 s 转换为小写字母。 ### capitalize 语法:`${s?capitalize}` 将字符串 s 的首字母转换为大写字母。 ### replace 语法:`${s?replace("old","new")}` 用字符串 new 替换字符串 s 中所有的 old。 ## 数字函数 ### round 语法:`${n?round}` 返回数字 n 的四舍五入值。 ### floor 语法:`${n?floor}` 返回小于等于数字 n 的最大整数。 ### ceiling 语法:`${n?ceiling}` 返回大于等于数字 n 的最小整数。 ## 日期函数 ### date 语法:`${date?date}` 返回日期 date 的日期部分,格式为 yyyy-MM-dd。 ### time 语法:`${date?time}` 返回日期 date 的时间部分,格式为 HH:mm:ss。 ### iso_utc 语法:`${date?iso_utc}` 返回日期 date 的 ISO 8601 格式的字符串,带有时区偏移量。 ## 其他函数 ### exists 语法:`${v?exists}` 如果变量 v 存在,则返回 true,否则返回 false。 ### default 语法:`${v?default("default")}` 如果变量 v 存在,则返回其值,否则返回默认值 "default"。 ### size 语法:`${list?size}` 返回列表 list 的长度。 ### sort 语法:`${list?sort}` 对列表 list 进行排序,返回排序后的列表。 以上是 FreeMarker 内建函数参考,可以根据实际需求选择使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值