2016-11-09 11 views
1

私はC#のフォームで簡単な難読化ツールを作ってるんだと私はそれを挿入するには、このコードを使用しています:複数の文字列を挿入するにはどうすればよいですか?

string a = RandomString(8); 
string b = RandomString(8); 
string c = RandomString(8); 
string d = RandomString(8); 
etc... 

Code.Text = Code.Text.Insert(0, "set " + a + "=a\n" + "set " + b + "=b\n" + "set " + c + "=c\n" + "set " + d + "=d\n" etc...); 

これが出力されます:

set pbatbpkz=a 
set aqtwbqlg=b 
set hitsvkvc=c 
set imuwqdfy=d 
etc... 

私は別のランダムな文字列を維持する必要があります私は後で "a"のような文字を文字列aに置き換えるコードを挿入することができます。

これは、明らかに効率的または専門的に見えません。私はかなり新しい#であるので、このようなテキストブロックを挿入する配列のようなものを作る方法がわからない。私はあなたが探している構造がDictionary<char, string>

単純

あなたはこのようにそれを使用するであろうと思い

Dictionary<char, string> strDict = new Dictionary<char, string>(); 
for (int i = 0; i < 26; i++) 
{ 
    if (!strDict.ContainsKey((char)(i + 97))) 
    { 
     strDict.Add((char)(i + 97), RandomString(8)); 
    } 
    else 
    { 
     strDict[(char)(i + 97)] = RandomString(8); 
    } 
} 

string letterTable = "abcdefghijklmnopqrstuvwxyz"; 
StringBuilder obfuscationTable = new StringBuilder(""); 

foreach (char c in letterTable) 
{ 
    obfuscationTable.AppendLine("set " + c + "=" + strDict[c]); 
} 

Code.Text = Code.Text.Insert(0, obfuscationTable.ToString()); 
+1

申し訳メイトを行います。 a..z変数と同じ値を持つ配列を作成する方法を知りたいですか? – mfvjunior

+0

私は "abcd etc ..."の文字のために "set" + "selectedLetter +" = selectedLetter \ n "を挿入します。そうすれば、挿入する大規模な文字列を入力する必要はありません。しかし、私が言ったように、私はかなり新しい#であるので、それらの文字を選択して使用する配列を作る方法はわかりません。 –

+0

RandomStringのコードを表示するのではなく、ランダムな文字列の場合は、2つの異なる文字の同じ文字列を生成することが可能です。 –

答えて

2

これを行う1つの方法は、辞書を使用することです。

Dictionary<char, string> strDict = new Dictionary<char, string>(); 
     for (int i = 0; i < 26; i++) 
     { 
      if(!strDict.ContainsKey((char)(i+97))) 
      { 
       strDict.Add((char)(i + 97), RandomString()); 
      } 
      else 
      { 
       strDict[(char)(i + 97)] = RandomString(); 
      } 
     } 

これは、その後、あなたがすることで、これらの文字列を取得する「」「Z」 までの文字を使用してアクセスすることができ、ランダムな文字列を使用してstrDictを記入します:あなたはその辞書を使用することができ

string strA = strDict['a'] //and so on 
+0

ありがとう!私はこの問題の結果としてコードを追加します! –

+0

助けてくれて嬉しいです。 – Jawad

0

:ジャワドが解決しよう


ここで若干良いコードです:

var charLookup = new Dictionary<char, string>{ 
    {'a', RandomString(8)}, 
    ... 
    {'z', RandomString(8)}, 
}; 

Code.Text = Code.Text.Insert(0, "set " + charLookup['a'] + "=a\n" .... 

少ないコードでこれを書く方法はたくさんあります。私はあなたの辞書を作成するループを使用することをお勧めし、あなたの文字列を生成するlinq。

3行のコードでこれを行うことができます。

シード付き乱数ジェネレータを使用して、これを1行で行うこともできます。

0

これらの文字をランダムな文字列にマップします。

Dictionary<string, string> RandomStringDictionary = new Dictionary<string, string>(); 
RandomStringDictionary.Add("a", RandomString(8)); 
... 
RandomStringDictionary.Add("z", RandomString(8)); 

は、その後、私はあなたが必要なものを理解していなかった、あなたのテキストを反復し、各文字の

RandomStringDictionary[CurrentCharacter] 
関連する問題