如何创建一个数组来插入一串字符串

本文关键字:插入 字符串 一串 数组 何创建 创建 一个 | 更新日期: 2023-09-27 18:16:57

我正在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。

这显然看起来不高效或不专业。我对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());

如何创建一个数组来插入一串字符串

一种方法是使用Dictionary。

   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

我认为您正在寻找的结构是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行代码中做到这一点。

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

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

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

然后遍历文本,对每个字符执行

RandomStringDictionary[CurrentCharacter]