使用String.Format

时间:2015-09-02 14:48:59

标签: c#

我正在尝试使用Format()方法格式化字符串 不幸的是,我用foreach循环得到了这个结果:

代码:

output += String.Format("{0,17} {1,48}\n\n", "Name", "Description " );

Console.WriteLine(output);

string outputloop;

foreach (IMetricContract contract in metrics)
{      
     outputloop = String.Format("{0,17} {1,48}\n", contract.Name, contract.Description);                
     Console.WriteLine(outputloop);
}

结果: enter image description here

您可以看到元素处于不同的位置,但我已经定义了相同的值。 有人知道解决方案吗?

编辑:

outputloop = String.Format("{0,-17} {1,-48}\n", contract.Name, 

我也尝试过这个位置的负值,但后来我得到了这个

结果: enter image description here

结果应如下所示(使用Imageeditor编辑)

enter image description here

2 个答案:

答案 0 :(得分:3)

如果我理解正确,我认为你想要负数,如:

outputloop = String.Format("{0,-17} {1,-48}\n", contract.Name, contract.Description);

这使它与左侧(而不是右侧)对齐。

当您使用正数或负数时,当实际字符数超过48的绝对值时(在我们的示例中)," extra"字符超出"字段"在右边。

答案 1 :(得分:0)

所以最后我发现了如何解决这个任务,而不是格式函数,我在c#中使用了padright函数作为字符串。 这两个网站给了我帮助:

http://www.dotnetperls.com/padright

https://msdn.microsoft.com/en-us/library/66f6d830(v=vs.110).aspx

这是我的代码:

foreach (IMetricContract contract in metrics)
            {
                name = contract.Name;
                desc = contract.Description;

                Console.Write("".PadRight(13,'#')+name.PadRight(41,'i'));
                Console.WriteLine(desc + "\n");

            }

屏幕: enter image description here