如何创建一个数组来插入一串字符串
本文关键字:插入 字符串 一串 数组 何创建 创建 一个 | 更新日期: 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]