c#中不使用多少个空格

时间:2015-10-01 06:20:20

标签: c# stringbuilder

我正在使用StringBuilder构建一个报告,并且它的详细信息是正确的并且已经对齐 我将使用

private static int paperWidth = 55; //it defines the size of paper
private static readonly string singleLine = string.Empty.PadLeft(paperWidth, '-');
StringBuilder reportLayout;
reportLayout.AppendLine("\t" + "Store Name");



我希望商店名称位于中心位置,并且通过 \ t 使用许多此类更多的场地 在此先感谢。

修改 我想打印像。将名称存储在中心

2 个答案:

答案 0 :(得分:2)

  

如果你正在模拟终端上的标签,你应该这样做   坚持8 spaces per tab。制表符转换到下一个   制表位。默认情况下,每8个空格一个。但在大多数炮弹中   您可以轻松地将其编辑为您想要的任意数量的空间

您可以通过以下代码实现此目的:

  string tab = "\t";
  string space = new string(' ', 8);
  StringBuilder str = new StringBuilder();
  str.AppendLine(tab + "A");
  str.AppendLine(space + "B");
  string outPut = str.ToString(); // will give two lines of equal length
  int lengthOfOP = outPut.Length; //will give you 15
  

从上面的例子我们可以说.Net \t的长度为   计算为1

答案 1 :(得分:1)

TabTab,其含义由呈现它的应用程序创建。

考虑一个Tab表示的文字处理器:

  

转到下一个标签页。

可以定义制表符停止!

中心输出不要使用Tabs,请使用正确的StringFormat

StringFormat fmt = new StringFormat() 
 { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };

这使文本在两个方向的矩形内部居中:

e.Graphics.DrawString(someText, someFont, someBrush, layoutRectangle, fmt);

或类似的东西..

但看起来好像你想把中心嵌入文本中。

这只有在您真正了解输出过程的所有内容时才有效,即设备,字体和大小以及边距等。

所以无论你做什么,它都可能根本不可靠。

最好的选择可能是放弃纯文本或使用固定数量的空格来“平均”'居中',然后在渲染时注意这个数字。

如果您无法控制渲染,则无效。