0

パスワードを生成するアプリを作っています

パスワードを生成するためのすべてのオプションがnullの場合、次の文字を使用する文字リストがあります。

  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 で実行したいのですが、上記のように使用するとエラーが発生するためです。そのヌル/空。どうすればこれを修正できますか?

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 に答える