FreeMarker 将带逗号的字符串转换为数字

FreeMarker convert string with commas to number

我需要通过删除小数位将中间带有逗号或点以指示千位分隔符的区域设置特定字符串值转换为 FreeMarker 中的数字。例如:13,456.7913,45623.675,9823.675

使用 ?number 会抛出异常,提示此字符串无法转换为数字。我在这里看到一个类似的问题: Convert string with commas into integer in Freemarker 但没有解决方案。有办法吗?

我会将变量解析为 Integer 之前(在 Controller/Business 层)将其暴露给模板(并在格式出现问题时做出反应)。

在我看来,模板应该只处理(有效)数据的呈现。

或者...

您可以尝试转换字符串...

<#function string_to_int s >
    <#local a = s?replace(",", "") >
    <#return a?keep_before_last(".") />
</#function>

${string_to_int("13,456.79")}

会输出

13456

考虑到区域设置特定数字的限制,其中小数点和千位分隔符可以是点或逗号,并且由于我只需要显示值而不是根据数字值进行任何数字计算,我解决了这通过使用 substring 简单地忽略字符串的最后 3 个字符。这将删除小数点分隔符和 2 个小数位(假设始终有 2 个小数位)。