2016-11-03 4 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>