C# 从列表中删除类似字符

C# 从列表中删除类似字符,c#,C#,我正在制作一个应用程序来生成密码 现在我有一个字符列表,当生成密码的所有选项都为空时,该列表使用以下字符: chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray(); 接下来我有一个else,它有一些选项,比如标点符号和符号,所以他没有使用标准字符: var listOfCharacters = string.Empty; foreach (v

我正在制作一个应用程序来生成密码

现在我有一个字符列表,当生成密码的所有选项都为空时,该列表使用以下字符:

  chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray();
接下来我有一个else,它有一些选项,比如标点符号和符号,所以他没有使用标准字符:

var listOfCharacters = string.Empty;

foreach (var currentOption in options)
{
    switch (currentOption)
    {

        case GenOptions.Punctuation:
             listOfCharacters += "&@.#%!*?;:,";
             break;
        case GenOptions.Symbols:
             listOfCharacters += "^$";
             break;       
        default:
             break; 
    }
}

chars = listOfCharacters.ToCharArray();

listOfCharacters.Remove('i'); listOfCharacters.Remove('!');  
listOfCharacters.Remove('l'); listOfCharacters.Remove('1'); 
listOfCharacters.Remove('O'); listOfCharacters.Remove('o'); 
listOfCharacters.Remove('0'); listOfCharacters.Remove('q');
listOfCharacters.Remove('p'); listOfCharacters.Remove('g');    
listOfCharacters.Remove('I');

现在,我想建立一个选项来删除相似的字符,这样几乎是彼此副本的字符就可以像o和0一样。我想对listofcharacter.remove执行此操作,但当我像上面那样使用它时,它会给我一个错误,因为它为null/空。现在,我如何修复此问题?

不确定
null/empty
错误消息

您正在尝试使用,它将字符索引作为参数。因此,当您传递
'i'
时,它首先转换为int,然后转换为
字符串。Remove
尝试删除具有该索引的字符。据我所知,这不是你想要它做的

您可以改为使用:

试试这个:

listOfCharacters.Replace('i',' '); 

哪一行给出了“null/empty”消息?如果你在问一个问题,那么它应该是一个注释。这不是一个问题,我要求你使用它。
listOfCharacters.Replace('i',' ');