0

我对 Velocity 模板很陌生,并尝试获取 8 位数的电话号码,如“12 34 56 78”或“123 45 678”。

我尝试了很多变化,包括

  1. $number.format('00 00 00 00',${phone})
  2. $number.format('#0 00 00 00',$phone)
  3. $display.printf("%s %s %s %s", $phone.substring(0,2), $phone.substring(2,4), $phone.substring(4,6), $phone.substring (6,8))

其中 $number = new NumberTool() 和 $display = new DisplayTool()

两个第一个输出没有空格的数字,而最后一个没有被 Velocity 解析。

4

2 回答 2

2

方法三会奏效。问题是 $phone 是您代码中的一个数字,而 substring() 将适用于字符串。解析模板时,它可能会在您的代码中打印“null”。

简单的解决方法是将 $phone 转换为字符串。只需执行以下操作:

#set ($phoneString = $phone.toString())
$display.printf("%s %s %s %s", $phoneString.substring(0,2), $phoneString.substring(2,4), $phoneString.substring(4,6), $phoneString.substring(6,8))

你会很高兴的。

对于任何寻找美式电话格式的人,请尝试:

$displayTool.printf("(%s) %s-%s", $phoneString.substring(0,3), $phoneString.substring(3,6), $phoneString.substring(6,10))
于 2016-01-22T22:28:54.073 回答
0

我现在结束了一个单独的类来通过 MessageFormat 进行格式化并将其放在上下文中:

$phoneNumber.format($phone)

我想必须有一种更简单的方法可以直接在模板中进行操作?

于 2013-08-06T13:06:54.310 回答