我正在创建一个生成密码的应用
现在我有一个字符列表,当生成密码的所有选项都为null时,它使用以下字符:
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做这个,但是当我像上面那样使用它时它给了我错误,因为它为null / empty。现在我该如何解决这个问题?
答案 0 :(得分:1)
不确定null/empty
错误消息。
您正在尝试使用String.Remove,它将字符索引作为参数。因此,当您传递'i'
时,它首先转换为int,然后String.Remove
尝试删除具有该索引的字符。据我所知,这不是你想要的。
您可以改为使用String.Replace:
String.Replace('!',String.Empty);
答案 1 :(得分:-1)
试试这个:
listOfCharacters.Replace('i',' ');