Velocity模板电话号码格式化

问题描述:

我对Velocity模板很陌生,尝试获取显示为“12 34 56 78”或“123 45 678”等8位数字的电话号码。Velocity模板电话号码格式化

我已经尝试了很多的变化,包括

  1. $ number.format('00 00 00 00' ,$ {}手机)
  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))

其中$数=新NumberTool()和$显示=新DisplayTool()

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

方法三将起作用。什么是错误的是$ 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)) 

我结束了,现在有一个单独的类做通过的MessageFormat格式化,并把该上下文:

$ phoneNumber.format($电话)

我想必须有一个更简单的方法直接在模板内部做到这一点?

+1

我喜欢在代码中有这样的事情,无论如何,更容易测试,并保持速度模板可读。模板中的代码很快变得混乱。 – centic