C# 如何调用函数

C# 如何调用函数,c#,C#,我已经做了一个函数,可以替换我列表中字符的位置 代码: 但我认为这并不好,因为他会停留在一个循环中。///用于替换 ///for replacing foreach (KeyValuePair<string, string> item in listOfSimilarCharacters) { password = password.Replace(item.Key, item.Value); } ///for removing foreach (KeyVal

我已经做了一个函数,可以替换我列表中字符的位置

代码:

但我认为这并不好,因为他会停留在一个循环中。

///用于替换
 ///for replacing
 foreach (KeyValuePair<string, string> item in listOfSimilarCharacters)
 {
    password = password.Replace(item.Key, item.Value);
 }

 ///for removing
  foreach (KeyValuePair<string, string> item in listOfSimilarCharacters)
  {
    if (password.IndexOf(item.Key) >= 0)
         password = password.Remove(password.IndexOf(item.Key), 1);
  }
foreach(相似字符列表中的KeyValuePair项) { password=password.Replace(item.Key,item.Value); } ///移除 foreach(相似字符列表中的KeyValuePair项) { if(password.IndexOf(item.Key)>=0) password=password.Remove(password.IndexOf(item.Key),1); }
试试这个简单的

 var charsThatCannotbeinUserPwd = new[] {'1', 'l', 'O', '0', 'i'};

        // Iterate through each character
        var builder = new StringBuilder();
        for (int i = 0; i < password.Length; i++)
        {
            var currentCharacter = password[i];

            if (!charsThatCannotbeinUserPwd.Any(x => x.Equals(currentCharacter)))
                builder.Append(currentCharacter);

        }

        return builder.ToString();
var charsthattcannotbeinuserpwd=new[]{'1','l','O','0','i'};
//遍历每个字符
var builder=新的StringBuilder();
for(int i=0;ix.Equals(currentCharacter)))
builder.Append(currentCharacter);
}
返回builder.ToString();

看起来您想从密码中删除一组字符。如果是这种情况,则不需要使用
词典
。如果您想用一个字符替换另一个字符,则使用
词典
会更有意义。此外,这里不需要使用递归。我相信您所需要的只是一个要删除的字符数组和一个简单的循环来删除它们

public string NoSimilarChar(string password)
{
    string[] charsToRemove = new  string[] { "l", "i", "1", "0", "O" }
    foreach (string charToRemove in charsToRemove)
    {
        password = password.Replace(charToRemove, "");
    }
    return password;
}

仅供参考:我将字符数组定义为字符串,因为您希望用空字符串替换字符,并且没有空字符。

您希望从“相似字符列表”中的密码文本中删除这些字符吗?为什么不直接遍历
字符列表并使用
字符串。是否删除
 var charsThatCannotbeinUserPwd = new[] {'1', 'l', 'O', '0', 'i'};

        // Iterate through each character
        var builder = new StringBuilder();
        for (int i = 0; i < password.Length; i++)
        {
            var currentCharacter = password[i];

            if (!charsThatCannotbeinUserPwd.Any(x => x.Equals(currentCharacter)))
                builder.Append(currentCharacter);

        }

        return builder.ToString();
public string NoSimilarChar(string password)
{
    string[] charsToRemove = new  string[] { "l", "i", "1", "0", "O" }
    foreach (string charToRemove in charsToRemove)
    {
        password = password.Replace(charToRemove, "");
    }
    return password;
}