Velocity模板电话号码格式化
问题描述:
我对Velocity模板很陌生,尝试获取显示为“12 34 56 78”或“123 45 678”等8位数字的电话号码。Velocity模板电话号码格式化
我已经尝试了很多的变化,包括
- $ number.format('00 00 00 00' ,$ {}手机)
- $ number.format('#0 00 00 00',$ phone)
- $ 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($电话)
我想必须有一个更简单的方法直接在模板内部做到这一点?
我喜欢在代码中有这样的事情,无论如何,更容易测试,并保持速度模板可读。模板中的代码很快变得混乱。 – centic