你如何把一个字符串从一个特定的位置开始?

How do you put a string starting from a specific position?

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

我试过 Console.SetCursorPosition 然后 @ 将长字符串文本放在一起,结果发现只有第一行受到 Console.SetCursorPosition.[=18 的影响=]

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

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

如果你将它包装在一个函数中,它应该可以工作:

public static void WriteAtPosition(int x, int y, stfing text)
{
    Console.SetCursorPosition(x,y);
    Console.Write(text);
}

您可以编写一个函数来执行此操作。例如:

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");