我正在使用以下代码来应用凯撒密码算法, 但是效果不好
代码
foreach (char t in richTextBox1.Text)
{
char encrypted = (char)(t + 3);
richTextBox2.Text = encrypted.ToString();
}
当纯文本是'mostafa'时,返回'd'只会获取最后一个字符 我该怎么办。
由于
答案 0 :(得分:1)
试试这个:
StringBuilder enrypted = new StringBuilder();
foreach (char t in richTextBox1.Text)
{
encrypted.Append((char)(t + 3));
}
richTextBox2.Text = encrypted.ToString();
答案 1 :(得分:1)
foreach (char t in richTextBox1.Text)
{
char encrypted = (char)(t + 3);
richTextBox2.Text = encrypted.ToString();
}
因为您要将richTextBox2.Text
分配给单个字符。最后一个恰好是显示的那个。您的结果不是累积的。
你可以这样做:
var sb = new StringBuilder();
foreach (char t in richTextBox1.Text)
{
char encrypted = (char)(t + 3);
sb.Append(encrypted);
}
richTextBox2.Text = sb.ToString();
答案 2 :(得分:1)
更改
richTextBox2.Text = encrypted.ToString();
到
richTextBox2.Text += encrypted.ToString();
答案 3 :(得分:0)
因为我真的很喜欢LINQ
char[] text = richTextBox1.Text.ToCharArray();
richTextBox2.Text = new String(text.Select(ch => (char)(ch + 3)).ToArray());