2016-11-03 60 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> 
相關問題