0

私は Velocity テンプレートにまったく慣れていないので、「12 34 56 78」または「123 45 678」のように表示される 8 桁の電話番号を取得しようとしています。

私は多くのバリエーションを試しました。

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

$number = new NumberTool() および $display = new DisplayTool()

最初の 2 つはスペースなしで数値を出力しますが、最後の 1 つは Velocity によって解析されません。

4

2 に答える 2

2

方法 3 が機能します。間違っているのは、コード内の $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))
于 2016-01-22T22:28:54.073 に答える
0

私は今のところ、 MessageFormat を介してフォーマットを行い、それをコンテキストに置く別のクラスになりました。

$phoneNumber.format($phone)

テンプレート内で直接行う簡単な方法があるに違いないと思いますか?

于 2013-08-06T13:06:54.310 に答える