Est-il possible de supprimer le dernier caractère de la console, c.-à-d.
Console.WriteLine("List: apple,pear,"); // Somehow delete the last ',' character from the console. Console.WriteLine("."); // Now the console contains "List: apple,pear."
Bien sûr, je pourrais d’abord créer une chaîne, puis l’imprimer sur la console, mais je suis simplement curieux de voir si je peux supprimer des caractères directement de la console.
“\ b” est un retour arrière ASCII. Imprimez-le pour sauvegarder un caractère.
Console.Write("Abc"); Console.Write("\b"); Console.Write("Def");
sorties “AbDef”;
Comme indiqué par Contango et Sammi, il est parfois nécessaire de remplacer un espace par un espace: Console.Write (“\ b \ b”);
Console.Write("\b \b");
est probablement ce que vous voulez. Il supprime le dernier caractère et recule le curseur.
Le caractère d’échappement \b
backspace ne fait que déplacer le curseur. Cela ne supprime pas le dernier caractère. Donc Console.Write("\b");
ne déplace que le caret en arrière, laissant le dernier caractère encore visible.
Console.Write("\b \b");
cependant, déplace d’abord le curseur vers l’arrière, puis écrit un caractère d’espacement qui remplace le dernier caractère et déplace le curseur vers l’avant. Nous écrivons donc un second \b
pour reculer le curseur. Maintenant, nous avons fait ce que le bouton retour arrière fait normalement.
Cela fera l’affaire si vous utilisez Write
plutôt que WriteLine
.
Console.Write("List: apple,pear,"); Console.Write("\b"); // backspace character Console.WriteLine(".");
Mais vous avez réellement beaucoup de contrôle sur la console. Vous pouvez écrire à n’importe quel endroit que vous souhaitez. Utilisez simplement la méthode Console.SetCursorPosition(int, int)
.
Si vous souhaitez supprimer un seul caractère, vous pouvez utiliser:
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
et Console.Write()
nouveau.
Si vous souhaitez supprimer plus d’un caractère, comme une automatisation, vous pouvez stocker le Console.CursorLeft
actuel dans une variable et utiliser cette valeur dans Console.SetCursorPosition(--variablename, Console.CursorTop)
pour supprimer plusieurs caractères. vouloir!
Les solutions ci-dessus fonctionnent très bien, sauf si vous parcourez une boucle for ou foreach. Dans cette situation, vous devez utiliser une approche différente, comme
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); Console.WriteLine(" ");
Cela fonctionne, mais fonctionne bien aussi pour une jointure de chaîne.
Exemples:
List myList = new List () { 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");
Vous pouvez effacer la console, puis écrire la nouvelle sortie.