static string ReadPassword(int length, char c)
该方法应该允许您输入字符串作为密码。 长度是密码的最小长度, c 是屏幕上显示的每个密码数字。
输入一个至少包含8个字符的密码,以便在Main中使用:
string pwd = ReadPassword(8, '●')
用户输入他/她密码的字母。但是,在屏幕上,不显示字母,而是存储在c中的字符,例如子弹'●'。
我如何以这样的方式构建程序:它为控制台eaven中输入的每个字符写*,虽然我的方法在返回s结束;
答案 0 :(得分:2)
你走了。
class Program {
static void Main(string[] args) {
char ch;int len;
Console.WriteLine("Enter the Length of the Password: ");
len = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter the Character for Password:");
ch = Convert.ToChar(Console.Read());
printPassword(len, ch);
Console.Read();
}
public static void printPassword(int len,char ch) {
char ch1;String pass="";
int i;
for (i = 0; i < len; i++) {
pass += Console.ReadKey(true);
Console.Write(ch);
}
}
}
答案 1 :(得分:1)
您可以将光标位置设置为输入位置或使用ReadKey(true)
试试这个:
class Program
{
static void Main(string[] args)
{
Console.Write("Set password: ");
var password = ReadPassword(8, 'o');
Console.WriteLine();
Console.WriteLine($"Your password is: {password}");
Console.ReadKey();
}
static string ReadPassword(int length, char c)
{
var left = Console.CursorLeft;
var top = Console.CursorTop;
var password = new StringBuilder();
for (int i = 0; i < length; i++)
{
password.Append(Console.ReadKey().KeyChar);
Console.SetCursorPosition(left + i, top);
Console.Write(c);
}
return password.ToString();
}
}
您可以在此处找到文档:https://msdn.microsoft.com/en-us/library/system.console.readkey(v=vs.110).aspx