2016-12-17 6 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は、Formatterクラスのの幅です。そのドキュメントを読ん

、あなたは

オプションは、出力に書き込まれる文字の最小数を示す負でない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', ' '); 
関連する問題