-3

次のコードを使用してシーザー暗号アルゴリズムを適用していますが、うまく機能しませんでした

コード

foreach (char t in richTextBox1.Text)
        {
            char encrypted = (char)(t + 3);
            richTextBox2.Text = encrypted.ToString();
        }

プレーンテキストが「mostafa」の場合、「d」を返すだけで最後の文字を取得できます。

ありがとう

4

4 に答える 4

1

これで試してください:

StringBuilder enrypted = new StringBuilder();
foreach (char t in richTextBox1.Text)
{
    encrypted.Append((char)(t + 3));                
}
richTextBox2.Text = encrypted.ToString();
于 2012-04-06T16:15:27.947 に答える
1
foreach (char t in richTextBox1.Text)
{
    char encrypted = (char)(t + 3);
    richTextBox2.Text = encrypted.ToString();
}

richTextBox2.Textを1つの文字に割り当てているためです。最後のものはたまたま表示されるものです。結果は累積的ではありません。

代わりに、次のようなことを行うことができます。

var sb = new StringBuilder();
foreach (char t in richTextBox1.Text)
{
    char encrypted = (char)(t + 3);
    sb.Append(encrypted);
}
richTextBox2.Text = sb.ToString();
于 2012-04-06T16:15:32.863 に答える
1

変化する

richTextBox2.Text = encrypted.ToString();

richTextBox2.Text += encrypted.ToString();
于 2012-04-06T16:15:57.653 に答える
0

LINQが大好きだから

char[] text = richTextBox1.Text.ToCharArray();
richTextBox2.Text = new String(text.Select(ch => (char)(ch + 3)).ToArray());
于 2012-04-06T16:26:28.223 に答える