正在学习C#。只是想知道如果用户选择隐藏密码的可见性,是否可以将字符串中的所有字符设置为星号。这是我到目前为止所拥有的:
private string Password
{ get; set; }
public bool Hidden
{ get; private set; }
public PasswordManager(string password, bool hidden)
{
Password = password;
Hidden = hidden;
}
public void Display()
{
if (Hidden == false)
{
Console.WriteLine(password);
}
else if (Hidden == true)
{
Console.WriteLine("*");
}
}
如您所见,如果 Hidden bool 为真,则 Console.WriteLine 需要写星号,但我希望它为每个字符写一个星号。是否可以不针对字符串内容而是针对给定字符串中的字符执行类似 foreach 循环的操作。使用类似 string.Length 的东西?任何帮助将不胜感激。谢谢你的时间!
您可以使用 for 循环将每个字符打印为 *:
public void Display()
{
if (Hidden == false)
{
Console.WriteLine(password);
}
else if (Hidden == true)
{
//Console.WriteLine("*");
for(int i=0; i<password.Length;i++)
Console.Write('*');
}
}
您应该能够使用 for 循环为密码中的每个字符打印一个星号。你要迭代的次数就是密码字符串的长度。
由于
string
类具有构造函数“将String类的新实例初始化为由指定的Unicode字符指示的值重复指定次数”,你可以只替换:
Console.WriteLine("*");
与:
Console.WriteLine(new string('*', password.Length));