用星号替换小写字符

Sha*_*hin 0 c# string replace

我写了一个将小写字符替换为 * 的代码。但它不起作用。问题出在哪儿?

   private void CharacterReplacement()
    {
        Console.WriteLine("Enter a string to replacement : ");
        string TargetString = Console.ReadLine();
        string MainString = TargetString;
        for (int i = 0; i < TargetString.Length; i++)
        {
            if (char.IsLower(TargetString[i]))
            {
                TargetString.Replace(TargetString[i], '*');
            }
        }
        Console.WriteLine("The string {0} has converted to {1}", MainString, TargetString);

    }
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 5

Replace()返回一个新字符串,因此您需要将其重新分配给TargetString

TargetString =  TargetString.Replace(TargetString[i], '*');
Run Code Online (Sandbox Code Playgroud)

表达您的意图的另一种方法是使用 Linq - 不确定我更喜欢哪个,这避免了所有临时字符串,但还有其他开销:

TargetString = new string(TargetString.Select(c => char.IsLower(c) ? '*' : c)
                                     .ToArray());
Run Code Online (Sandbox Code Playgroud)