2016-12-17 1 views
2

이것은 간단한 문제인 것처럼 보일 수 있지만 솔직히이 문제를 해결하지 못했습니다. 다음과 같이
나는 형식화 한 문자열을 가지고 :형식화 된 문자열을 채우는 방법

String msg = String.format("Current player: %1$s", status.getCurrentPlayer().getName()); 

을 나는 왼쪽 패드는, 10 대 말할 수 있습니다합니다. 나는 시도 :

String pad = String.format("%1$10s", msg); 

했지만 작동하지 않는 것, 내가 포맷되지 않은 문자열로 그것을 시도하지만 :

String pad = String.format("%1$10s", "some string"); 

및 obviousely, 그것은했다.
"msg"는 무엇입니까?

+1

'$ 10'은 10 칸을 허용합니다. 10 칸으로 채우지 않습니다. –

+3

즉,''현재 pl "'자체는 10 자입니다. 아무것도 더 이상 패딩되지 않았습니다 –

+0

ohhhh 그래서 $ x는 x 공간을 합계로 나타냅니다. 나는 전에 그것을 얻지 않았다. 고맙습니다. –

답변

2

"msg"는 무엇입니까?

10자를 초과합니다.

10은 클래스의 너비입니다.

그 문서를 읽고, 당신은

옵션

출력에 기입하는 최소 문자 수를 나타내는 10 진정 수 있습니다 볼 수 있습니다.

따라서 최소값보다 긴 문자열은있는 그대로 인쇄됩니다.

패드를 사용하려면 문자열의 길이에 10을 더하십시오.

String msg = "some really, really long message"; 
String fmt = "%1$" + (10 + msg.length()) + "s"; 
String pad = String.format(fmt, msg); 
// "   some really, really long message" 
2
String msg = "Current player: " 
      + status.getCurrentPlayer().getName() 
      + new String(new char[10]).replace('\0', ' '); 

이 플레이어의 이름 다음에 10 대를 추가합니다. 플레이어 이름의 길이를 고려하려면 다음을 수행하십시오.

String msg = "Current player: " 
      + status.getCurrentPlayer().getName() 
      + new String(new 
        char[10 - status.getCurrentPlayer().getName().Length ]).replace('\0', ' '); 
관련 문제