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

时间:2017-06-06 10:37:38

标签: freemarker

我需要转换一个特定于语言环境的字符串值,其间有逗号或点,以指示千位分隔符,通过删除小数位来转换为FreeMarker中的数字。例如:13,456.7913,45623.675,9823.675

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

2 个答案:

答案 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个小数位)。