4

我正在尝试测试字符串是否可以在 FreeMarker 中转换为数字。例如,“123”和“3.14”可以转换,但“foo”不能。我知道我可以通过在字符串上使用 number 方法(例如"123"?number)并查看它是否产生错误来对此进行测试,但我正在寻找一种方法来测试它而不会导致错误。

我试过?matches("^\d+$")了,它适用于整数,但我正在寻找适用于所有数字的东西。

我可能可以使用更复杂的正则表达式来做到这一点,但我想知道是否有更简单的方法。

4

1 回答 1

9

更简单的方法是不在 FreeMarker 中执行此操作 :-) 这听起来像是控制器(或模型上的方法)应该执行的操作,而不是视图模板。也就是说,您有几个选择:

  1. <#attempt> / <#recover>在块内使用 ?number 内置。
  2. 在您的模型对象之一中编写一个方法来检查您的字符串是否为数字并从模板中调用它。
  3. 编写一个自定义指令来为您执行此操作。
于 2009-09-24T21:49:01.827 回答