如何在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
相关产品推荐
相关产品推荐

