我对Velocity模板很新,并试图获得一个8位数的电话号码,如“12 34 56 78”或“123 45 678”。
我尝试了很多变种,包括
其中$ number = new NumberTool()和$ display = new DisplayTool()
两个首先输出没有空格的数字,而最后一个没有被Velocity解析。
答案 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)
我想必须有一种更简单的方法直接在模板中进行吗?