如何放置从特定位置开始的字符串?

时间:2019-07-20 14:39:51

标签: c# console cursor-position

我一直试图找出一种捷径,将长字符串文本放置在特定坐标中,而无需多次使用Console.SetCursorPositionConsole.WriteLine。我计划使用快捷方式,尤其是在定位ASCII文本时。

我尝试先进行Console.SetCursorPosition,然后再进行@来将长字符串文本放在一起,只是发现只有第一行受Console.SetCursorPosition影响。

Console.SetCursorPosition(50, 1);
Console.WriteLine("Hello");
Console.SetCursorPosition(50, 2);
Console.WriteLine("World");
Console.ReadKey();

我希望输出以某种方式在Hello的中间显示World

2 个答案:

答案 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);
}