6

さて、基本的に私は次のようなものが欲しいです

Console.WriteLine(
    "{0}:   {1}/{2}hp    {3}/{4}mp   {5}", 
    character.Identifier, 
    character.CurrentHealth, 
    character.MaxHealth,
    character.CurrentMagic, 
    character.MaxMagic, 
    character.Fatigue
    );

次に、文字を取得します。識別子(基本的には名前)には、文字が設定されており、必要に応じてスペースに置き換えられます。

Josh:   20/20hp    20/20mp   3

また

J:      20/20hp    20/20mp   3

しかし、HP、次にmp、その他すべてが常に並んでいます。おそらく{0:}の1つであることは承知していますが、機能するものを見つけることができませんでした

4

3 に答える 3

7

表記の 2 番目の引数は{0}、固定幅のフィールドを指定できるため、識別子 (名前) を常に 10 文字の長さで左揃えにしたい場合は、次のように使用します。{0,-10}

MSDN は、この種の質問にも適したリソースです。String.Formatのドキュメントを読むと、必要なものに似た固定幅のテーブルの例が示されています。

また、ホーガンの答えが正しく指摘しているよう:に、名前のすぐ隣に必要な場合は、フォーマット文字列の外側の文字列に追加する必要があります。

于 2013-01-06T22:40:33.353 に答える
5

次を使用して、文字列をスペースで右に埋め込むことができます。

character.Identifier.PadRight(10);

これにより、目的のフォーマットが得られるはずです。

于 2013-01-06T22:44:45.943 に答える
2

私はこれがあなたが望むことをすると信じています:

const int colWidth = 10;
Console.WriteLine("{0,-"+colWidth.ToString()+"}{1,-"+colWidth.ToString()+"}{2,-"+colWidth.ToString()+"}{3}", 
    (character.Identifier+":").PadRight(colWidth+1).Remove(0,colWidth),
    (character.CurrentHealth+"/"+character.MaxHealth+"hp").PadRight(colWidth+1).Remove(0,colWidth),
    (character.CurrentMagic+"/"+character.MaxMagic+"mp").PadRight(colWidth+1).Remove(0,colWidth),
    (character.Fatigue,colWidth));

これにより、文字列の末尾にスペースが追加され、結果が切り捨てられます。
String.Format のドキュメントを参照してください

ノート

フォーマット文字列の外側の名前に を追加し:、hp セクションと mp セクションを「マージ」してから、それらを列に配置します。

于 2013-01-06T22:43:36.880 に答える