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

如何在GSP中无需控制器将数字格式化为带连字符的形式?

解决方案:在GSP中直接格式化SortCode为12-34-56(无需控制器)

完全可以不用控制器,直接在GSP里通过replaceAll处理你现有的g:formatNumber结果,甚至还有更直接的字符串处理方案,两种方法都给你整理好了:

方案1:基于现有g:formatNumber修改

你已经用g:formatNumber得到了12,34,56,只需要把输出结果里的逗号替换成横杠就行。因为g:formatNumber返回的是字符串,所以可以直接链式调用replaceAll方法:

${g.formatNumber(number: sortCode, format: '##,##').replaceAll(',', '-')}

如果觉得链式调用可读性差,也可以先把格式化结果存到变量里再替换:

<g:set var="commaSeparatedCode" value="${g.formatNumber(number: sortCode, format: '##,##')}" />
${commaSeparatedCode.replaceAll(',', '-')}

这样就能直接得到12-34-56的结果,完全不需要控制器介入。

方案2:直接对SortCode做字符串格式化(更高效)

如果你的sortCode是固定6位的数字或字符串,其实可以跳过g:formatNumber,直接用正则分组替换一步到位:

  • 若sortCode是字符串类型:
${sortCode.replaceAll('(\\d{2})(\\d{2})(\\d{2})', '$1-$2-$3')}
  • 若sortCode是数字类型,先转成字符串再处理:
${sortCode.toString().replaceAll('(\\d{2})(\\d{2})(\\d{2})', '$1-$2-$3')}

这种方法省去了中间转逗号分隔的步骤,效率更高,代码也更简洁。

总结一下,两种方法都能在GSP里直接完成格式化,完全不用麻烦控制器处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:43:12