如何使数组插入一串字符串?

时间:2016-11-09 00:55:10

标签: c#

我在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...

我需要将随机字符串分开,以便稍后我可以插入代码来替换像#34; a"用字符串a。

这显然看起来不高效或专业。我对c#很新,所以我不知道如何制作类似数组的内容来插入这个文本块。

由Jawad解决

这里有更好的代码:

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());

3 个答案:

答案 0 :(得分:2)

一种方法是使用词典。

   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();
            }
        }

这将用随机字符串填充你的strDict,可以使用从'a'到'z'的字符访问 然后你得到这些字符串:

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

答案 1 :(得分:0)

我认为您正在寻找的结构是Dictionary<char, string>

天真地你会像这样使用它:

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行代码中执行此操作。

或者使用种子随机数生成器在一行中执行此操作。

答案 2 :(得分:0)

您可以使用将这些字符映射到随机字符串的字典。

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

然后迭代你的文字,并为每个角色做

RandomStringDictionary[CurrentCharacter]