Velocity模板电话号码格式化

时间:2013-08-06 13:06:54

标签: templates formatting velocity

我对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))
  4. 其中$ number = new NumberTool()和$ display = new DisplayTool()

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

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分:0)

我现在最后使用一个单独的类来通过MessageFormat进行格式化并将其放在上下文中:

$ phoneNumber.format($ phone)

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