6

好的,所以基本上我想要类似的东西

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

然后让 character.Identifier (基本上是一个名称)有一组字母,如果需要,它将用空格替换,以便可以打印

Josh:   20/20hp    20/20mp   3

或者

J:      20/20hp    20/20mp   3

但是 HP 然后 mp 和其他一切总是一致的。我知道它可能是 {0:} 之一,但我想不出一个有效的

4

3 回答 3

7

符号中的第二个参数{0}可以为您提供一个固定宽度的字段,因此如果您希望标识符(名称)的长度始终为 10 个字符并且左对齐,您可以使用{0,-10}

MSDN 也是此类问题的一个很好的资源,如果您阅读String.Format的文档,它有一个固定宽度表的示例,可能与您想要的类似。

此外,正如 Hogan 的回答正确指出的那样,:如果您希望它紧挨着名称,则必须将其附加到格式字符串之外的字符串。

于 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 回答