Mar*_*doc 3 c# string console char
这包含来自方法,它写入隐藏的字母.当我点击退格时,我需要以某种方式从控制台删除char*.
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;
}
Run Code Online (Sandbox Code Playgroud)
我搜索了一个答案,但命令Console.Write("\ b"); 但它似乎没有正常工作.
您可以将光标的位置设置为1,写入空字符,然后再将其移回.像这样:
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;
}
Run Code Online (Sandbox Code Playgroud)