java - 如何检查字符串是否可以转换为数字

标签 java freemarker

在 freemarker 中,我有一个宏 myfunc执行以下操作:

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

所以,本质上,如果 x (以字符串开头)并且可以转换为数字,然后我想将其包装在 (${x}) 中否则只显示值。

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

似乎没有一种简单的方法可以在不使用<#attempt>的情况下检查字符串是否可以转换为数字。或者我的研究步履蹒跚——我也不想在 Java 端这样做,因为我将其视为 View 代码,不属于我的模型代码。有人知道吗?

最佳答案

您可以使用正则表达式:

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

关于java - 如何检查字符串是否可以转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413141/

相关文章:

java - 如何在 freemarker 中评估 if 语句?

java - Android Bitmap.createBitmap() 填充堆

java - 如何将此行从 Velocity 转换为 FreeMarker?

datetime - 如何使用 Freemarker 计算两个 ISO8601 日期之间的天数差异?

java - 在 Java 中对 Hash Map 进行两次迭代

spring-mvc - 如何在 Freemarker 中访问包含点的 Spring MVC 模型属性名称

java - Google App Engine 上的 ServletContext 类路径中的 "context"在哪里?

java - Android 监听来自库模块的事件

java - 查找 JSP 中是否启用/禁用 JavaScript

java - GridBagLayout 中的 JPanel 位置不正确