2016-11-03 25 views
1

在freemarker的,我有一个宏myfunc是执行以下操作:我如何检查一个字符串是否可转换为数字

<#macro myfunc x> 
    <#attempt> 
    <#assign x=(x?number)> 
    <#recover> 
    </#attempt> 
    ${x!''} 
</#macro> 

所以,基本上,如果x(其作为一个字符串开始关闭)和可以转换为数字,然后我想将它包装在(${x})中,否则只显示值。

我很满意这个解决方案,除了丑陋的<#attempt>错误记录它随附。

似乎没有一种简单的方法来检查字符串是否可以转换为数字而不使用<#attempt>或者我的研究动摇不定 - 我还不想在Java端执行此操作,因为我将其视为视图代码,不属于我的模型代码。有人知道吗?

回答

1

你可以使用正则表达式:

<#if x?matches("\\d+")> 
    // do something with x?number 
<#else> 
    // do something with x 
</#if> 
相关问题