StringBuilder sb = new StringBuilder();
// Send all output to the Appendable object sb
Formatter formatter = new Formatter(sb, Locale.US);
// Explicit argument indices may be used to re-order output.
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
// -> " d c b a"
이 경우 $에 2가 추가되는 이유는 무엇입니까?
답변
는 다음과 관련 2
이 없습니다 $
.
%
= 형식 문자열 시작4$
= 네 번째 인수 ( ‘d’)2
= 너비 2 (오른쪽 정렬)s
= 문자열 유형
답변
답변
%4$2s
이는 네 번째 인수를 너비 2의 문자열로 형식화하는 신호 가있는 위치 인수입니다 . 이는 소스 코드를 건드리지 않고 인수를 재정렬해야하는 지역화를위한 문자열을 제공 할 때 특히 유용합니다.
날짜 및 시간을 나타내는 데 사용되는 유형에 대한 형식 지정자는 다음 구문을 갖습니다.
%[argument_index$][flags][width]conversion
선택 사항
argument_index
은 인수 목록에서 인수의 위치를 나타내는 10 진수 정수입니다. 첫 번째 인수는에서 참조"1$"
하고 두 번째 인수는에서 참조합니다"2$"
. — Formatter 문서
답변
%
: 형식 문자열
4$
: 네 번째 값 인수
2
: 너비 (인수가 인쇄 될 때 길이)
s
: 문자열 인수 변환입니다.
예를 들어, 다음 스 니펫 :
StringBuffer sb=new StringBuffer();
Formatter formatter=new Formatter(sb,Locale.UK);
formatter.format("-%4$5s-%3$5s-%2$5s-%1$5s-", "a", "b", "c", "d");
System.out.println(sb);
다음과 같은 출력을 생성합니다.
- d- c- b- a-
(인수 당 5 자 너비, 공백으로 채워짐)
및 교체 5
로하면 2
, 다음과 같은 출력을 생성 할 것이다 :
- d- c- b- a-
차이점이 보이십니까? 🙂