How to remove char '*' from Console Window? Command Console.Write("\b"); didn't work

c#, char, console, string

Solution

You can set the cursor's position back one, write a null character, then move it back again. Like this:

private static string Password()
{
    bool enter = true;
    string pass = "";
    do
    {
        char letter = Console.ReadKey(true).KeyChar;
        if (letter == (char)13)
        { enter = false; }
        else if (letter == (char)8 && pass.Length >= 1)
        {
            pass = pass.Remove(pass.Length - 1);
            Console.CursorLeft--;
            Console.Write('\0');
            Console.CursorLeft--;
        }
        //Additionally, don't print backspaces if it's the first character.
        else if (letter != (char)8)
        {
            pass += letter;
            Console.Write("*");
        }
    } while (enter);
    Console.WriteLine();
    return pass;
}

Problem

This is contain from method, which writes hidden letters. When I hit a backspace, I need somehow to delete char * from console. ``` private static string Password() { bool enter=true; string pass=""; do { char letter = Console.ReadKey(true).KeyChar; if (letter == (char)13) { enter = false; } else if (letter == (char)8 && pass.Length >= 1) { pass = pass.Remove(pass.Length - 1); Console.Write("\b"); } else { pass += letter; Console.Write("*"); } } while (enter); Console.WriteLine(); return pass; } ``` I searched for an answer but the command Console.Write("\b"); but it doesn't seem to work correctly.

Original source