我写了一个将小写字符替换为 * 的代码。但它不起作用。问题出在哪儿?
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)
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)