Con*_*ngo 40 c# console console-application console.writeline
有没有办法从控制台删除最后一个字符,即
Console.WriteLine("List: apple,pear,");
// Somehow delete the last ',' character from the console.
Console.WriteLine(".");
// Now the console contains "List: apple,pear."
Run Code Online (Sandbox Code Playgroud)
当然,我可以先创建一个字符串,然后将其打印到控制台,但我只是想知道是否可以直接从控制台删除字符.
Joh*_*len 59
"\ b"是ASCII退格.打印它以备份一个字符.
Console.Write("Abc");
Console.Write("\b");
Console.Write("Def");
Run Code Online (Sandbox Code Playgroud)
输出"AbDef";
正如Contango和Sammi所指出的那样,有时需要用空格覆盖:
Console.Write("\b \b");
Run Code Online (Sandbox Code Playgroud)
Sam*_*mmi 41
Console.Write("\b \b");可能就是你想要的.它会删除最后一个字符并将插入符号移回.
该\b退格转义字符只移动插入符号后面.它不会移动最后一个字符.所以Console.Write("\b");只将一个插入符号向后移动,使最后一个字符仍然可见.
Console.Write("\b \b");但是,首先将插入符号移回,然后写入一个空白字符,覆盖最后一个字符并再次向前移动插入符号.所以我们写了一秒钟\b再次将插入符号移回去.现在我们已经完成了退格按钮通常所做的事情.
Jef*_*dge 17
如果您使用Write而不是,这将成功WriteLine.
Console.Write("List: apple,pear,");
Console.Write("\b"); // backspace character
Console.WriteLine(".");
Run Code Online (Sandbox Code Playgroud)
但是你实际上对控制台有很多控制权.您可以写信到任何您想要的位置.只需使用该Console.SetCursorPosition(int, int)方法.
要在控制台上删除字符,请使用
Console.Write("\x1B[1D"); // Move the cursor one unit to the left
Console.Write("\x1B[1P"); // Delete the character
Run Code Online (Sandbox Code Playgroud)
这将正确删除光标之前的字符并将所有后续字符移回。使用下面的语句只会将光标之前的字符替换为空格,而不会实际删除它。
Console.Write("\b \b");
Run Code Online (Sandbox Code Playgroud)
我提出的解决方案也应该适用于其他一些编程语言,因为它使用 ANSI 转义序列。
小智 6
如果您只想删除一个字符,您可以使用:
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);和Console.Write()试。
如果您想删除多个字符,例如自动化,您可以将当前存储Console.CursorLeft在一个变量中,并Console.SetCursorPosition(--variablename, Console.CursorTop)在循环中使用该值来删除您想要的多个字符!