将字符串与string.Format()对齐

时间:2012-03-15 08:36:49

标签: c# string-formatting

我有一个接收消息和Priority枚举的方法,并返回一个格式化的字符串。

private string FormatMessage(string message, Priority priority)
{
    return string.Format("*{0,-6}* - {1}", priority, message);
}

Priority有三个可能的值:HighMediumLow

我正在使用string.Format的对齐选项,以便输出看起来不错。我希望输出看起来像这样:

*Low*    - First message
*Medium* - Second message
*Low*    - Third message

但是,我得到的是:

*Low   * - First message
*Medium* - Second message
*Low   * - Third message

我理解为什么会发生这种情况,但我想知道的是,使用string.Format并且不引入任何新变量是否有一种简单(和正确)的方式来获得所需的输出。

2 个答案:

答案 0 :(得分:10)

string.Format("{0,-8} - {1}", "*" + priority + "*", message);

或者,如果你感觉很好看:

string.Format("{0,-8} - {1}", string.Format("*{0}*", priority), message);
string.Format("{0,-8} - {1}", string.Join(priority, new [] {"*", "*"}), message);

答案 1 :(得分:1)

你能把第一列放大到8个空格吗?如果是的话......

private string FormatMessage(string message, Priority priority) 
{ 
    return string.Format("{0,-8} - {1}", "*" + priority.ToString() + "*", message); 
}