You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FreeMarker中生成数字序列与字母序列

FreeMarker 生成数字序列与字母序列实现方案

生成数字序列

FreeMarker内置了直接生成数字序列的语法,无需自定义工具类:

  1. 连续数字序列(步长为1)
    使用..操作符即可生成指定区间的连续数字,支持正序、倒序生成:
<#-- 正序生成1到10的数字序列 -->
<#list 1..10 as num>
${num}
</#list>

<#-- 倒序生成10到1的数字序列 -->
<#list 10..1 as num>
${num}
</#list>
  1. 自定义步长数字序列
    使用内置range函数实现自定义步长,函数格式为range(起始值, 结束边界, 步长),注意生成的序列不包含结束边界:
<#-- 生成1、3、5、7、9的奇数序列,步长为2,结束边界填11即可覆盖到10以内的最大值 -->
<#list range(1, 11, 2) as num>
${num}
</#list>

生成字母序列

FreeMarker没有内置的字母序列生成语法,可以通过ASCII码转换的方式实现:

  1. 基础字母序列生成
    利用字符和ASCII码的互转内置函数,先生成对应ASCII码的数字序列,再转换为字符即可:
<#-- 生成a到z的小写字母序列,a对应ASCII码97,z对应122 -->
<#list 97..122 as asciiCode>
${asciiCode?char}
</#list>

<#-- 生成A到Z的大写字母序列,A对应ASCII码65,Z对应90 -->
<#list 65..90 as asciiCode>
${asciiCode?char}
</#list>
  1. 自定义区间字母序列
    无需手动记忆ASCII码,通过?int内置函数直接把字符转为对应ASCII码即可定义区间:
<#-- 生成c到m的小写字母序列 -->
<#assign startCode = 'c'?int>
<#assign endCode = 'm'?int>
<#list startCode..endCode as asciiCode>
${asciiCode?char}
</#list>
  1. 自定义步长字母序列
    结合range函数实现间隔取值:
<#-- 生成A、C、E...等间隔的大写字母序列 -->
<#list range(65, 91, 2) as asciiCode>
${asciiCode?char}
</#list>

注意事项

  • range函数的结束边界不包含在生成的序列内,如需覆盖到目标最大值,需将结束边界设置为目标最大值+1
  • ASCII码转字符使用?char内置函数,字符转ASCII码使用?int内置函数
  • 2.3.22以下版本的FreeMarker不支持range函数的步长参数,如需使用该特性请升级到最新稳定版

内容的提问来源于stack exchange,提问作者Big Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:15:05