c# - ¿Hay alguna manera de eliminar un carácter que acaba de escribirse utilizando Console.WriteLine?
console-application (6)
si desea eliminar solo un carácter, puede usar:
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
y Console.Write()
nuevamente.
si desea eliminar más de una char, como una automatización, puede almacenar la Console.CursorLeft
actual en una variable y usar ese valor en Console.SetCursorPosition(--variablename, Console.CursorTop)
en un bucle para eliminar muchos caracteres que usted ¡querer!
¿Hay alguna forma de eliminar el último carácter de la consola, es decir,
Console.WriteLine("List: apple,pear,");
// Somehow delete the last '','' character from the console.
Console.WriteLine(".");
// Now the console contains "List: apple,pear."
Claro, podría crear una secuencia primero y luego imprimir eso en la consola, pero solo tengo curiosidad por ver si puedo eliminar caracteres directamente de la consola.
Esto hará el truco si usa Write
lugar de WriteLine
.
Console.Write("List: apple,pear,");
Console.Write("/b"); // backspace character
Console.WriteLine(".");
Pero en realidad tienes mucho control sobre la consola. Puede escribir en cualquier ubicación que desee. Simplemente use el método Console.SetCursorPosition(int, int)
.
Puede borrar la consola y luego escribir la nueva salida.
Las soluciones anteriores funcionan muy bien a menos que esté iterando a través de un bucle for o foreach. En esa situación, debes usar un enfoque diferente, como
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
Console.WriteLine(" ");
Sí funciona, sin embargo funciona bien también para una unión de cuerdas.
Ejemplos:
List<int> myList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < myList.Count; i++)
{
Console.Write(myList[i] + ", ");
}
Console.WriteLine("/b/b"); //this will not work.
foreach (int item in myList)
{
Console.Write(item + ", ");
}
//this will work:
Console.SetCursorPosition(Console.CursorLeft - 2, Console.CursorTop);
Console.WriteLine(" ");
//you can also do this, btw
Console.WriteLine(string.Join(", ", myList) + "/b/b");
Console.Write("/b /b");
es probablemente lo que quieres Elimina el último carácter y lo mueve hacia atrás.
El carácter de escape /b
backspace solo mueve el cursor hacia atrás. No retiró el último char. Entonces Console.Write("/b");
solo mueve el cursor hacia atrás, dejando el último carácter aún visible.
Console.Write("/b /b");
sin embargo, primero mueve el cursor hacia atrás, luego escribe un carácter en blanco que sobrescribe el último carácter y mueve el cursor hacia adelante otra vez. Así que escribimos un segundo /b
para mover el cursor nuevamente. Ahora hemos hecho lo que normalmente hace el botón de retroceso.
"/ b" es retroceso ASCII. Imprimir para hacer una copia de seguridad de un char.
Console.Write("Abc");
Console.Write("/b");
Console.Write("Def");
salidas "AbDef";
Como señalaron Contango y Sammi, hay momentos en los que se requiere sobrescribir con un espacio: Console.Write ("/ b / b");