String hello = "Hello";
String.format("%s %s %s %s %s %s", hello, hello, hello, hello, hello, hello);
hello hello hello hello hello hello
format 메소드를 호출 할 때 hello 변수를 여러 번 반복해야합니까, 아니면 모든 %s
토큰에 적용 할 인수를 한 번 지정할 수있는 속기 버전이 있습니까?
답변
에서 워드 프로세서 :
일반, 문자 및 숫자 유형의 형식 지정자는 다음 구문을 갖습니다.
%[argument_index$][flags][width][.precision]conversion
선택적 argument_index 는 인수 목록에서 인수의 위치를 나타내는 10 진 정수입니다. 첫 번째 인수는로
"1$"
, 두 번째 인수는 등으로 참조됩니다"2$"
.
String.format("%1$s %1$s %1$s %1$s %1$s %1$s", hello);
답변
다른 옵션은 상대 색인 을 사용하는 것 입니다. 형식 지정자는 마지막 형식 지정자와 동일한 인수를 참조합니다.
예를 들면 다음과 같습니다.
String.format("%s %<s %<s %<s", "hello")
결과 hello hello hello hello
.
답변
%[argument_index$]
다음과 같이 인수 를 색인해야합니다 .
String hello = "Hello";
String.format("%1$s %1$s %1$s %1$s %1$s %1$s", hello);
결과 : hello hello hello hello hello hello
답변
인수를 재사용하는 일반적인 경우 중 하나 String.format
는 구분 기호 (예 : ";"
CSV 또는 콘솔 탭)입니다.
System.out.println(String.format("%s %2$s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; ; ; b"
이것은 원하는 출력이 아닙니다. "c"
어디에도 나타나지 않습니다.
구분 기호를 먼저 사용하고 (와 함께 %s
) %2$s
다음과 같은 경우에는 인수 색인 ( ) 만 사용해야합니다 .
System.out.println(String.format("%s %s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; b ; c"
가독성과 디버깅을 위해 공백이 추가되었습니다. 형식이 올 바르면 텍스트 편집기에서 공백을 제거 할 수 있습니다.
System.out.println(String.format("%s%s%s%2$s%s%n", "a", ";", "b", "c"));
// "a;b;c"