2013-08-06 47 views
0

我對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解析。

回答

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)) 
0

我結束了,現在有一個單獨的類做通過的MessageFormat格式化,並把該上下文:

$ phoneNumber.format($電話)

我想必須有一個更簡單的方法直接在模板內部做到這一點?

+1

我喜歡在代碼中有這樣的事情,無論如何,更容易測試,並保持速度模板可讀。模板中的代碼很快變得混亂。 – centic