【发布时间】:2013-01-26 13:22:21
【问题描述】:
如果有人可以提供帮助,我将不胜感激! 我需要用我的字典中的另一个字符替换我的文本中的每个字符(加密,我从文件中读取)。
StreamReader st = new StreamReader(@"C:\path of text");
string text = st.ReadToEnd();
st.Close();
char[] textChar = text.ToCharArray(); //splitting text into characters
所以,在我的字典 Dictionary<char, char> keys = new Dictionary<char,char>(); 中,我有一些字母,比如“n”和值 - 另一个字母,说“a”。所以我需要在我的文本中用'a'替换每个'n'。字典有 26 个字母作为键和 26 个字母作为值。
现在我尝试替换字母并将“解密”文本写入某个文件
StreamWriter sw = new StreamWriter(@"path for decrypted file");
foreach(KeyValuePair<char, char> c in keys)
{
for(int i =0; i< textChar.Length; i++)
{
if (textChar.Contains(c.Key))
{ //if text has char as a Key in Dictionary
textChar[i] = keys[c.Key]; //replace with its value
}
else
{
sw.Write(textChar[i]); //if not, just write (in case of punctuatuons in text which i dont want to replace)
}
}
}
st.Close();
file.Close();
此代码无法正常工作,因为替换错误。 如果有任何帮助,我将不胜感激!
【问题讨论】:
-
Gyuzal 你知道你想改变什么键,如果是这样,那么你需要在 for 循环内有一个 Switch 语句,也许你必须马上知道你想要的键是什么替换..
-
Gyuzal 如果您展示文本的真实示例以及您的预期结果是什么也会有所帮助..不确定您要做什么对我来说听起来有点可疑..哈哈
-
为什么需要替换文本中的字符?你能解释得更详细些吗?可能有一个简单的解决方案来解决您的问题。
-
是的,我很抱歉:) 我需要使用频率分析来解密我的文本,所以在我的字典中我有键值,这是我计算出来的。比如,'m' 必须替换为 'c','n' 替换为 'r','k' 替换为 'y' 等等。示例:加密文本:mnkore -> 解密文本:crypto
-
你能把这个例子添加到你原来的问题中吗..加密的文本也会改变吗..?如果是这样,那么你需要使用常规的加密/解密机制你看过
Cryptography Class看看这个项目你在做什么是一种愚蠢的加密方式这里是一个很好的链接Cryptography in C#
标签: c# dictionary char iteration