我一直试图找出一种捷径,将长字符串文本放置在特定坐标中,而无需多次使用Console.SetCursorPosition
和Console.WriteLine
。我计划使用快捷方式,尤其是在定位ASCII文本时。
我尝试先进行Console.SetCursorPosition
,然后再进行@
来将长字符串文本放在一起,只是发现只有第一行受Console.SetCursorPosition
影响。
Console.SetCursorPosition(50, 1);
Console.WriteLine("Hello");
Console.SetCursorPosition(50, 2);
Console.WriteLine("World");
Console.ReadKey();
我希望输出以某种方式在Hello
的中间显示World
。
答案 0 :(得分:2)
您可以编写一个函数来执行此操作。例如:
static void Print(int left, int top, params string[] lines)
{
foreach (string line in lines)
{
Console.SetCursorPosition(left, top);
Console.WriteLine(line);
top++;
}
}
并这样称呼它:
Print(50, 1, "Hello", "World");
或者等效地是这样的:
string[] lines = { "Hello", "World" };
Print(50, 1, lines);
如果文本由空格分隔的单词组成,并且您想在每行上放置一个单词,则可以在函数内部的空格处分割文本。这样,您就可以传递一行文字。
static void Print(int left, int top, params string[] lines)
{
foreach (string line in lines)
{
string[] words = line.Trim().Split(new char[] { ' ' });
foreach (string word in words)
{
Console.SetCursorPosition(left, top);
Console.WriteLine(word);
top++;
}
}
}
并这样称呼它:
Print(50, 1, "Hello World");
答案 1 :(得分:0)
如果将其包装在函数中,它应该可以工作:
public static void WriteAtPosition(int x, int y, stfing text)
{
Console.SetCursorPosition(x,y);
Console.Write(text);
}