没有背景颜色的控制台文本填充
console text padding without background color
我有一个循环写入一个字符串 10 次,每次都使用较大的填充。
它还将每隔一行的背景颜色设置为深黄色。
int x = 5;
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
Console.BackgroundColor = ConsoleColor.DarkYellow;
}
else
{
Console.ResetColor();
}
x = x + 1;
string str = "word";
Console.WriteLine(str.PadLeft(x));
}
问题是我的深黄色行从行填充的开始一直被着色。但是我只希望单词本身是没有空格的深黄色。
这只是未经任何测试的黑客攻击,但应该给出如何使其工作的想法:
int x = 5;
for (int i = 1; i <= 10; i++)
{
Console.ResetColor();
x = x + 1;
Console.Write("".PadLeft(x));
if (i % 2 == 0)
Console.BackgroundColor = ConsoleColor.DarkYellow;
string str = "word";
Console.WriteLine(str);
}
关键的变化是您不需要一次写整行。您可以使用 Console.Write()
来编写没有背景颜色的填充。然后用Console.WriteLine()
写完单词+换行。
你应该先写没有背景颜色的空格,然后只写有选定背景颜色的单词:
int x = 5;
for (int i = 1; i <= 10; i++)
{
Console.ResetColor();
if (x > 5)
{
Console.Write(new String(' ', x - 5));
}
if (i % 2 == 0)
{
Console.BackgroundColor = ConsoleColor.DarkYellow;
}
x = x + 1;
string str = "word";
Console.WriteLine(str);
}
Console.ReadLine();
我有一个循环写入一个字符串 10 次,每次都使用较大的填充。 它还将每隔一行的背景颜色设置为深黄色。
int x = 5;
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
Console.BackgroundColor = ConsoleColor.DarkYellow;
}
else
{
Console.ResetColor();
}
x = x + 1;
string str = "word";
Console.WriteLine(str.PadLeft(x));
}
问题是我的深黄色行从行填充的开始一直被着色。但是我只希望单词本身是没有空格的深黄色。
这只是未经任何测试的黑客攻击,但应该给出如何使其工作的想法:
int x = 5;
for (int i = 1; i <= 10; i++)
{
Console.ResetColor();
x = x + 1;
Console.Write("".PadLeft(x));
if (i % 2 == 0)
Console.BackgroundColor = ConsoleColor.DarkYellow;
string str = "word";
Console.WriteLine(str);
}
关键的变化是您不需要一次写整行。您可以使用 Console.Write()
来编写没有背景颜色的填充。然后用Console.WriteLine()
写完单词+换行。
你应该先写没有背景颜色的空格,然后只写有选定背景颜色的单词:
int x = 5;
for (int i = 1; i <= 10; i++)
{
Console.ResetColor();
if (x > 5)
{
Console.Write(new String(' ', x - 5));
}
if (i % 2 == 0)
{
Console.BackgroundColor = ConsoleColor.DarkYellow;
}
x = x + 1;
string str = "word";
Console.WriteLine(str);
}
Console.ReadLine();