[java] Java의 형식 문자열에서 $ 이해

 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     = 문자열 유형


답변

2$수단 여기 목록에서 두 번째 인수를했습니다. 는 $ 다음 숫자가하지를 앞에옵니다. 마찬가지로, 4$여기에 네 번째 인수를 넣으십시오.

명확히하기 위해 %2$2s형식을 부분으로 나눌 수 있습니다.

  • % -형식 문자열임을 나타냅니다.

  • 2$ -여기에 두 번째 값 인수를 넣어야 함을 보여줍니다.

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

차이점이 보이십니까? 🙂


답변