0

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

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

  chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray();

接下来我有一个其他选项,例如标点符号和符号,所以他没有使用标准字符:

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 来做到这一点,但是当我像上面那样使用它时,它给了我一个错误,因为它的空/空。现在我该如何解决这个问题?

4

2 回答 2

1

不确定null/empty错误消息。

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

您可以使用String.Replace代替:

String.Replace('!',String.Empty);
于 2013-02-28T11:07:04.610 回答
-1

尝试这个:

listOfCharacters.Replace('i',' '); 
于 2013-02-28T11:17:05.183 回答