c# console console-application console.writeline

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