2013-08-06 7 views
0

저는 Velocity 템플릿이 새로 도입되어 "12 34 56 78"또는 "123 45 678"과 같이 8 자리 숫자의 전화 번호를 표시하려고합니다.속도 템플릿 전화 번호 형식 지정

나는

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

처음 두 개는 공백없이 숫자를 출력하고 마지막 하나는 벨로 시티에 의해 구문 분석되지 않습니다.

답변

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

내가 MessageFormat의를 통해 서식을 수행하는 별도의 클래스로 지금까지 종료하고 상황에 그 퍼팅 :

$ phoneNumber.format ($ 전화) 나는 쉬운 방법이있을 것 같아요

템플릿 안에서 직접 할 수 있습니까?

+1

나는 어쨌든 코드 같은 것을 가지고 테스트 훨씬 쉽게 좋아하고 읽기 속도 템플릿을 유지합니다. 템플릿의 코드가 빨리 지저분 해집니다. – centic

관련 문제