prosource

문자열에서 동일한 각 인수에 대한 변수를 지정해야 합니까?포맷?

probook 2023. 8. 6. 10:11
반응형

문자열에서 동일한 각 인수에 대한 변수를 지정해야 합니까?포맷?

String hello = "Hello";

String.format("%s %s %s %s %s %s", hello, hello, hello, hello, hello, hello);

hello hello hello hello hello hello 

하십니까?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"

언급URL : https://stackoverflow.com/questions/6891175/do-i-have-to-specify-a-variable-for-each-identical-argument-in-string-format

반응형