Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以从控制台清除特定文本吗?_C#_Text_Console - Fatal编程技术网

C# 我可以从控制台清除特定文本吗?

C# 我可以从控制台清除特定文本吗?,c#,text,console,C#,Text,Console,我试图建立一个游戏,我总是清除屏幕,但这使它滞后。因此,为了使其不滞后,我可以清除特定文本吗?如果您只想删除最后一个字符,只需使用控制台退格\b字符即可 Console.Write("\b"); 如果只想清除一个字符,可以使用Console.SetCursorPosition(int,int)达到该点,然后写入为空 Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); Console.WriteLine("

我试图建立一个游戏,我总是清除屏幕,但这使它滞后。因此,为了使其不滞后,我可以清除特定文本吗?

如果您只想删除最后一个字符,只需使用
控制台退格
\b字符即可

Console.Write("\b");
如果只想清除一个字符,可以使用
Console.SetCursorPosition(int,int)
达到该点,然后写入为空

Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
Console.WriteLine(" ");
要删除多个字符,可以将当前的
Console.CursorLeft
存储在一个变量中,并在
Console.SetCursorPosition(--variablename,Console.CursorTop)
循环中使用该值来删除所需的多个字符

例如:-如果要删除当前控制台行,则

public static void RemoveCurrentConsoleLine()
{
    int currentCursorLine = Console.CursorTop;
    Console.SetCursorPosition(0, Console.CursorTop);
    Console.Write(new string(' ', Console.WindowWidth)); 
    Console.SetCursorPosition(0, currentCursorLine);
}

Console.WriteLine("Top 1 Line");
Console.WriteLine("Top 2 Line");
Console.WriteLine("Top 3 Line");
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
然后输出将仅为前2行。第三行将被删除:-

Top 1 Line
Top 2 Line

我认为在命令行应用程序中获得干净刷新的可能性很小,即使是替换文本。您是否考虑过WPF RichTextBox方法?它也不是超级性能,但它很简单,不会闪烁。我制作了snake,所以文本的位置总是会改变