我需要转换一个特定于语言环境的字符串值,其间有逗号或点,以指示千位分隔符,通过删除小数位来转换为FreeMarker中的数字。例如:13,456.79
到13,456
或23.675,98
到23.675
使用?number
抛出异常,说明此字符串无法转换为数字。我在这里看到一个类似的问题:
Convert string with commas into integer in Freemarker但没有解决方案。有办法吗?
答案 0 :(得分:2)
我会先将变量解析为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
答案 1 :(得分:0)
考虑到区域设置特定数字的限制,其中十进制和千位分隔符可以是点或逗号,因为我只需要显示值而不是根据数值进行任何数值计算,我通过以下方法解决了这个问题。只需使用substring
忽略字符串的最后3个字符。这将删除小数点分隔符和2个小数位(假设总是有2个小数位)。