53

コンソールから最後の文字を削除する方法はありますか?

Console.WriteLine("List: apple,pear,");
// Somehow delete the last ',' character from the console.
Console.WriteLine(".");
// Now the console contains "List: apple,pear."

もちろん、最初に文字列を作成してからコンソールに出力することもできますが、コンソールから文字を直接削除できるかどうかを知りたいだけです。

4

8 に答える 8

77

"\b" は ASCII バックスペースです。印刷して1文字バックアップします。

Console.Write("Abc");
Console.Write("\b");
Console.Write("Def");

「AbDef」を出力します。

Contango と Sammi が指摘したように、スペースで上書きする必要がある場合があります。

Console.Write("\b \b");
于 2011-03-04T15:33:46.873 に答える
48

Console.Write("\b \b");おそらくあなたが望むものです。最後の文字を削除し、キャレットを戻します。

バックスペース エスケープ文字は\b、キャレットを戻すだけです。最後の文字は削除されません。そのConsole.Write("\b");ため、キャレットを 1 つだけ後ろに移動し、最後の文字を表示したままにします。

Console.Write("\b \b");ただし、最初にキャレットを後方に移動してから、最後の文字を上書きする空白文字を書き込み、キャレットを再び前方に移動します。\bそのため、キャレットを再び戻すために1 秒を書き込みます。これで、バックスペース ボタンの通常の動作が完了しました。

于 2014-06-25T09:13:20.917 に答える
18

Writeの代わりにを使用すると、これでうまくいきますWriteLine

Console.Write("List: apple,pear,");
Console.Write("\b");  // backspace character
Console.WriteLine(".");

しかし、実際にはコンソールを細かく制御できます。あなたはあなたが望むどんな場所にも書くことができます。Console.SetCursorPosition(int, int)メソッドを使用するだけです。

于 2011-03-04T15:35:09.863 に答える
6

1文字だけ削除したい場合は、次を使用できます。

Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);そしてConsole.Write()また。

オートメーションのように複数の文字を削除したい場合は、現在のConsole.CursorLeft値を変数に保存し、その値をConsole.SetCursorPosition(--variablename, Console.CursorTop)ループで使用して、必要な多くの文字を削除できます!

于 2014-05-20T19:47:22.180 に答える
3

for または foreach ループを反復処理しない限り、上記のソリューションはうまく機能します。そのような状況では、次のような別のアプローチを使用する必要があります

 Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
 Console.WriteLine(" ");

ただし、文字列結合でもうまく機能します。

例:

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");
于 2014-04-22T19:01:39.650 に答える
1

コンソールをクリアしてから、新しい出力を書き込むことができます。

于 2011-03-04T15:33:53.253 に答える