我在 C# 中有这段代码,但是用于在块内移动的代码会覆盖用于移动d
字母的代码。我该如何解决这个问题,以便它们不再相互覆盖?这是代码:
private void Crypt(int n, int m, int d)
{
// make a block from the string
string invoerstring = invoer.Text;
uitvoer.Text = invoerstring;
// shift d letters
char[] buffer = invoerstring.ToCharArray();
for (int i = 0; i < buffer.Length; i++)
{
// Letter.
char letter = buffer[i];
// Add shift to all.
letter = (char)(letter + d);
// Subtract 26 on overflow.
// Add 26 on underflow.
if (letter > 'z')
{
letter = (char)(letter - 26);
}
else if (letter < 'a')
{
letter = (char)(letter + 26);
}
// Store.
buffer[i] = letter;
}
uitvoer.Text+=buffer;
//shift characters inside a block
var shift = String.Concat(invoerstring.Skip(m).Concat(invoerstring.Take(m)));
uitvoer.Text = shift;
}
private void button1_Click(object sender, EventArgs e)
{
Crypt(8,2,1);
}