C# 如果用户选择了“隐藏”功能,则将字符串中的每个字符设置为星号 (*)

问题描述 投票:0回答:3

正在学习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 的东西?任何帮助将不胜感激。谢谢你的时间!

c# string char
3个回答
1
投票

您可以使用 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('*');
   }
}

1
投票

您应该能够使用 for 循环为密码中的每个字符打印一个星号。你要迭代的次数就是密码字符串的长度。


1
投票

由于

string
类具有构造函数“将String类的新实例初始化为由指定的Unicode字符指示的值重复指定次数”,你可以只替换:

Console.WriteLine("*");

与:

Console.WriteLine(new string('*', password.Length));
© www.soinside.com 2019 - 2024. All rights reserved.