Стирание последнего напечатанного символа в консоли

Рейтинг: 2Ответов: 1Опубликовано: 11.02.2023

Как реализовать стирание символа в консоли в данном методе? В данный момент при нажатии BackSpace сдвигается курсор, но не пропадает уже введенный символ из консоли

public string InputString(string mes, string escapeStr)
        {
            Console.WriteLine(mes);
            Console.CursorVisible = true;
            StringBuilder buffer = new();
            ConsoleKeyInfo ski = Console.ReadKey(true);
            while (ski.Key != ConsoleKey.Escape && ski.Key != ConsoleKey.Enter)
            {
                Console.Write(ski.KeyChar);
                buffer.Append(ski.KeyChar);
                ski = Console.ReadKey(true);
            }
            if (ski.Key == ConsoleKey.Enter)
            {
                return buffer.ToString();
            }
            return escapeStr;
            Console.CursorVisible = false;
        }

Ответы

▲ 4Принят

Backspace + Space + Backspace

if (ski.Key == ConsoleKey.Backspace)
{
    Console.Write("\b \b");
    buffer.Length--;
}

Другой пример реализации, см. метод ReadPassword, обратите внимание на проверку char.IsControl.