如何在c#中在控制台writeline中为字符串保留一定数量的字母

本文关键字:字符串 控制台 writeline 保留 | 更新日期: 2023-09-27 17:50:48

我想要的是

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

,然后有字符。标识符(基本上是一个名称)有一定数量的字母,如果需要,它会用空格替换,这样in可能会打印

Josh:   20/20hp    20/20mp   3

J:      20/20hp    20/20mp   3

但是HP,然后mp和其他的都是一致的。我知道它可能是{0:}之一,但我不能找出一个工作

如何在c#中在控制台writeline中为字符串保留一定数量的字母

{0}表示法中的第二个参数可以给您一个固定宽度的字段,所以如果您希望标识符(名称)始终是10个字符长并且左对齐,您将使用{0,-10}

MSDN对于这类问题也是一个很好的资源,如果你阅读了字符串的文档。格式它有一个固定宽度表格的例子,可能类似于你想要的。

此外,正如Hogan的答案正确指出的那样,如果你想让它紧挨名称,你必须将:附加到格式字符串之外的字符串。

可以使用:

右加空格
character.Identifier.PadRight(10);

我相信这会达到你的目的:

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。格式的

指出

我将:附加到格式字符串之外的名称,并"合并"hp和mp部分,然后将它们放在一列中。