嗨,我正在尝试使用C#应用程序的收据打印机打印一张账单/收据。
预期输出是这样的:
ITEM NAME QTY PRICE
Banana Large Yellow 1 2.00
Brie Cheese 6 pack round 3 30.00
Indian Mango Box 10 246.00
我一直在使用string.format
函数,但是输出常常不对齐,并且GET的间距取决于项目名称长度等。
ITEM NAME QTY PRICE
Banana Large Yellow 1 2.00
Brie Cheese 6 pack round 3 30.00
Indian Mango Box 10 246.00
怎样才能解决这个问题?
我使用的代码是
test_string = "-------------------------------\r\n";
test_string += "First Name | Last Name | Age\r\n";
test_string += String.Format("{0,-10} | {1,-10} | {2,5}", "Bill", "Gates", 51) + "\r\n";
test_string += String.Format("{0,-10} | {1,-10} | {2,5}", "Edna", "Parker", 114) + "\r\n";
test_string += String.Format("{0,-10} | {1,-10} | {2,5}", "Johnny", "Depp", 44) + "\r\n";
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center; // Horizontal Alignment
StringFormat right = new StringFormat();
right.Alignment = StringAlignment.Far;
// Measure string.
SizeF stringSize = new SizeF();
pd.PrintPage += delegate(object sender, PrintPageEventArgs e)
{
string measureString = data;
Font stringFont = new Font("Arial", 16);
stringSize = e.Graphics.MeasureString(measureString, stringFont);
RectangleF rect = new RectangleF(0, height_value, pd.DefaultPageSettings.PrintableArea.Width, pd.DefaultPageSettings.PrintableArea.Height);
if (weight == "bold")
{
if (alignment == "center")
{
e.Graphics.DrawString(data, new Font(font, 11, System.Drawing.FontStyle.Bold), new SolidBrush(System.Drawing.Color.Black), rect, format);
}
else
{
e.Graphics.DrawString(data, new Font(font, 11, System.Drawing.FontStyle.Bold), new SolidBrush(System.Drawing.Color.Black), rect);
}
}
else
{
if (alignment == "center")
{
e.Graphics.DrawString(data, new Font(font, 11), new SolidBrush(System.Drawing.Color.Black), rect, format);
}
else if (alignment == "right")
{
e.Graphics.DrawString(data, new Font(font, 11), new SolidBrush(System.Drawing.Color.Black), rect, right);
}
else
{
e.Graphics.DrawString(data, new Font(font, 11), new SolidBrush(System.Drawing.Color.Black), rect);
}
}
height_value = Convert.ToInt32(stringSize.Height) + height_value;
};
public string Test()
{
string[] names = { "Banana Large Yellow", "Brie Cheese", "Indian Mango Box" };
int[] quantities = { 1, 3, 10 };
decimal[] prices = { 2.00m, 30.00m, 246.00m };
string format = "{0,-25} {1,-10} {2,5}" + Environment.NewLine;
var stringBuilder = new StringBuilder().AppendFormat(format, "Item Name", "QTY", "Price");
for (int i = 0; i < names.Length; i++)
{
stringBuilder.AppendFormat(format, names[i], quantities[i], prices[i]);
}
PrintFormat(stringBuilder.ToString(), "Arial", "normal", "left", 20);
}
为了以表格式结构打印数据,可以使用string.format
使用带宽度和对齐方式的格式项。
一起来看看它的工作原理:
// in comments underscores mean spaces
Console.WriteLine("Res:{0,6}.", 12345); // Res:_12345.
Console.WriteLine("Res:{0,-6}.", 12345); // Res:12345_.
但如果生成的字符串长度大于指定的宽度怎么办?然后打印结果,就好像根本没有对齐和宽度一样。
Console.WriteLine("Res:{0,-6}", 123456789); // Res:123456789.
Console.WriteLine("Res:{0,6}.", 123456789); // Res:123456789.
您应该更好地使用StringBuilder.AppendFormat
。它与格式项一起工作,就像string.format
或console.writeline
一样。
对不起,我知道以前有人问过这个问题,但其他答案对我没有任何帮助。 PhpStorm一直使用4个空格来缩进,这让我抓狂。该文件是一个. php文件,我所知道的所有设置都设置正确。我已经检查了这些东西: 1.)编辑器|代码样式|“检测并使用现有文件缩进”未选中(文件仍使用2个空格) 2.)编辑器|代码样式|PHP|“选项卡大小” 3.)我已重新启动PhpStorm 4.)我已经关闭并重新打开了文件。
问题内容: 在编码python时,我仅使用2个空格进行缩进,请确保PEP-8确实建议使用4个空格,但从历史上看,这是不寻常的。 那么,谁能说服我使用4个空格而不是2个空格?有什么优缺点? PS最后,将所有现有代码库从2个空间转换为4个空间的简单方法是什么? PPS PEP-8也强烈建议不要使用制表符进行缩进。在这里阅读 因此,总结一下: 优点: 包裹长度超过80行的字符串时,要安排更多空间。 可以
问题内容: 我是Python的新手。上面粘贴的程序特别在“ if temp == dna2:”行给我一个错误“缩进中的制表符和空格的不一致使用”。有人可以帮我找出缩进不正确的地方吗? 问题答案: 这意味着您在缩进中混合了空格和制表符。您必须解决此问题,使其与制表符或空格保持一致。
问题内容: 我试图在Python 3.2中创建应用程序,并且一直使用制表符进行缩进,但是即使编辑器也将其中的一些更改为空格,然后在尝试运行时打印出“不一致使用制表符和空格”该程序。 如何将空格更改为制表符?这让我疯狂。(我是编程的初学者)。如果我能在代码中获得一些总体提示,我会很高兴,如果我犯了很多错误,我会很高兴听到。 问题答案: 不要使用标签。 将你的编辑器设置为使用4个空格进行缩进。 搜索并
本文向大家介绍浅谈Vim中的Tab与空格缩进,包括了浅谈Vim中的Tab与空格缩进的使用技巧和注意事项,需要的朋友参考一下 vim缩进参数解析 缩进用 tab 制表符还是空格,个人爱好问题。但是在大多项目中,习惯使用空格。关于缩进,vim中可以通过如下四个参数进行配置 解析: tabstop 表示按一个tab之后,显示出来的相当于几个空格,默认的是8个。 softtabstop 表示在编辑模式的时
我正在配置eslint并使用AirBNB样式指南。 我想覆盖缩进(应该是2个空格)为4个空格。但是无论我在我的. eslintrc中做什么,我都不能抑制这个错误,这样我就可以使用4个空格的缩进。 我的代码库中到处都有这样一条消息:“预期缩进2个空格,但发现4个。(react/jsx indent)”。 我正在使用eslint 4.9.0。我如何解决这个问题?谢谢