如何在Freemarker模板中将字符串按34长度拆分并限制4段
Freemarker实现固定长度分段截断需求
需求回顾
将任意长度字符串按34字符为一段拆分,最多保留4段(总长度不超过136字符),超出部分直接截断;长度不足34字符时保持原样,段间用空格分隔。
实现方案
利用Freemarker的字符串截取函数与循环指令组合实现,核心逻辑分为两步:
- 先将原字符串截断至最大允许长度(34×4=136字符),减少后续处理的冗余计算
- 通过循环遍历4次,每次截取34字符的片段,将片段用空格拼接成最终结果
代码示例
假设待处理字符串变量为inputStr,模板代码如下:
<#-- 1. 截断至最大允许长度:136字符(4×34) --> <#assign limitedStr = inputStr?length > 136 ? inputStr?substring(0, 136) : inputStr> <#-- 2. 分段拼接 --> <#assign segmentedResult = ""> <#list 0..3 as segmentIndex> <#assign start = segmentIndex * 34> <#if start < limitedStr?length> <#assign segment = limitedStr?substring(start, start + 34)> <#assign segmentedResult = segmentedResult + (segmentIndex == 0 ? "" : " ") + segment> </#if> </#list> <#-- 输出最终结果 --> ${segmentedResult}
示例验证
- 长字符串场景:输入超长字符串时,先截断前136字符,再拆分为4个34字符的片段,用空格分隔,结果与需求示例完全匹配
- 短字符串场景:输入长度小于34的字符串时,
limitedStr即为原字符串,循环仅执行第一次截取,直接返回原字符串,符合需求
内容的提问来源于stack exchange,提问作者Shivam Bhatt
相关产品推荐
相关产品推荐

