/t不在C#控制台中工作
当我将\t放入/t不在C#控制台中工作,c#,visual-studio,console-application,C#,Visual Studio,Console Application,当我将\t放入控制台时,writelin()不起作用 if (reader.HasRows) { Console.WriteLine("|{0}|\t|{1}|\t|{2}|\t|{3}|\t|{4}|", reader.GetName(0), reader.GetName(1), reader.GetName(2), reader.GetName(3), reader.GetName(4));
控制台时,writelin()
不起作用
if (reader.HasRows)
{
Console.WriteLine("|{0}|\t|{1}|\t|{2}|\t|{3}|\t|{4}|", reader.GetName(0),
reader.GetName(1), reader.GetName(2), reader.GetName(3), reader.GetName(4));
while (reader.Read())
{
Console.WriteLine("|{0}|\t|{1}|\t|{2} EGP|\t|{3} EGP|\t|{4}|", reader.GetString(0),
reader.GetInt32(1), reader.GetInt32(2), reader.GetInt32(3), reader.GetString(4));
}
}
结果是:
|Product Name| |Quantity| |price per item | |Total| |Code|
|a| |1| |0 EGP| |1 EGP| |12|
甚至当我使用{0,10}
或{0,-10}
时,它也不起作用
谢谢。\t在这里真的很管用。但你在期待别的东西。如果您能提及您期望的输出类型。这很容易帮上忙 编辑:下面的代码将按照预期创建表的标题。调整{}内的第二个数字以适合您的列宽
Console.WriteLine(string.Format("|{0,-20}|{1,-20}|{2,-20}|{3,-20}|{4,-20}|", "Product Name", "Quantity", "Price per item", "Total", "Code"));
\我在这里真的不工作。但你在期待别的东西。如果您能提及您期望的输出类型。这很容易帮上忙 编辑:下面的代码将按照预期创建表的标题。调整{}内的第二个数字以适合您的列宽
Console.WriteLine(string.Format("|{0,-20}|{1,-20}|{2,-20}|{3,-20}|{4,-20}|", "Product Name", "Quantity", "Price per item", "Total", "Code"));
是的,这是工作。
您应该将选项卡想象为列标记。因此,当您放置\t时,您是在对控制台说:跳转到下一个可用列标记。在标题中,“Product Name”已将第一个选项卡列改为红色,因此当Console process\t时,它会跳到第二列。相反,在数据中,“a”的值很小,可以跳到第1列
这将以正确的格式输出:
Console.WriteLine(string.Format("|{0,-15}|", "Product Name"));
Console.WriteLine(string.Format("|{0,-15}|", "a"));
你可以看到它在是的,它在工作。
您应该将选项卡想象为列标记。因此,当您放置\t时,您是在对控制台说:跳转到下一个可用列标记。在标题中,“Product Name”已将第一个选项卡列改为红色,因此当Console process\t时,它会跳到第二列。相反,在数据中,“a”的值很小,可以跳到第1列
这将以正确的格式输出:
Console.WriteLine(string.Format("|{0,-15}|", "Product Name"));
Console.WriteLine(string.Format("|{0,-15}|", "a"));
您可以看到它在Q下工作
\t
的作用是什么
A.
它将光标移动到下一列,该列是8的倍数
这正是您的示例中发生的情况。也许不是你想要的,但肯定是你想要的 Q
\t
的作用是什么
A.
它将光标移动到下一列,该列是8的倍数
这正是您的示例中发生的情况。也许不是你想要的,但肯定是你想要的 如果您知道列的长度,一个权宜之计是使用
string.PadRight
。但它很混乱:
Console.WriteLine("{0}{1}{2}{3}{4}",
("|" + reader.GetString(0) + "|").PadRight(20, ' '),
("|" + reader.GetInt32(1) + "|").PadRight(20, ' ')
("|" + reader.GetInt32(2) + "EGP|").PadRight(20, ' ')
("|" + reader.GetInt32(3) + "EGP|").PadRight(20, ' ')
("|" + reader.GetString(4) + "|").PadRight(20, ' '));
虽然把它放进一个单独的方法是很简单的
如果您确实想使用\t
,那么您可以编写一个单独的方法来计算要添加的选项卡数量。同样,您需要知道每个字段的长度:
string ToTabColumn(string text, int length)
{
int tabSize = 8; // no easy way of getting environment tab length
int colSize = text.Length + Convert.ToInt32(Math.Ceil((double)(length - text.Length) / tabSize));
return text.PadRight(colSize, '\t');
}
如果您知道列的长度,一个权宜之计是使用
string.PadRight
。但它很混乱:
Console.WriteLine("{0}{1}{2}{3}{4}",
("|" + reader.GetString(0) + "|").PadRight(20, ' '),
("|" + reader.GetInt32(1) + "|").PadRight(20, ' ')
("|" + reader.GetInt32(2) + "EGP|").PadRight(20, ' ')
("|" + reader.GetInt32(3) + "EGP|").PadRight(20, ' ')
("|" + reader.GetString(4) + "|").PadRight(20, ' '));
虽然把它放进一个单独的方法是很简单的
如果您确实想使用\t
,那么您可以编写一个单独的方法来计算要添加的选项卡数量。同样,您需要知道每个字段的长度:
string ToTabColumn(string text, int length)
{
int tabSize = 8; // no easy way of getting environment tab length
int colSize = text.Length + Convert.ToInt32(Math.Ceil((double)(length - text.Length) / tabSize));
return text.PadRight(colSize, '\t');
}
你应该看一看字符串填充而不是制表法。看起来它在工作,它可能没有做你想做的事情,但是\t字符不是“我想做什么就做什么”——字符它是如何工作的,但是“| Total | | Code |”之间的空间不等于“|数量| |每项价格|”你期望什么输出?它起作用了,让那家伙休息一下!很明显他在问什么。如果您认为可以更好地表达它,那么您可以通过编辑问题来提供帮助。您应该查看字符串填充,而不是制表。看起来它正在工作,它可能没有做您想做的事情,但是\t字符不是“只做我想做的事”\t字符如何工作,而是“| Total | | Code |”之间的空格不等于“|数量| |每项价格|“您期望的输出是什么?它起作用了,让那家伙休息一下!很明显他在问什么。如果你认为它可以表达得更好,那么你可以通过编辑问题来提供帮助。我需要制作一个表格来显示输出,我需要使空间相等。我需要制作一个表格来显示输出,我需要使空间相等