Ich versuche, ein Caesar-Chiffre-Programm zu erstellen, jedoch kann ich die Leerzeichen aus der endgültigen verschlüsselten Ausgabe nicht entfernen. Ich benutzte:Problem mit dem Entfernen von Leerzeichen aus Zeichenfolge in Caesar-Chiffre C#
if (letter == ' ')
continue;
Allerdings scheint dies nicht zu funktionieren und ich kann nicht identifizieren, was das Problem verursacht. Ich habe nicht sehr lange mit C# gearbeitet, also könnte es möglicherweise ein dummer Fehler sein.
Wenn ich zur Eingabe war der Satz mit einer Verschiebung von 7: „Ich brauche Hilfe“ die folgende Ausgabe pAullkAolsw sein würde, mit allen Räumen Groß A. Werden Die Ausgabe Ich mag, sollte in dem Beispiel haben: p ullk olsw .
Unten ist mein voller Code:
using System;
class Program
{
static string Caesar(string value, int shift)
{
char[] buffer = value.ToCharArray();
for (int i = 0; i < buffer.Length; i++)
{
char letter = buffer[i];
letter = (char)(letter + shift);
if (letter == ' ')
continue;
if (letter > 'z')
{
letter = (char)(letter - 26);
}
else if (letter < 'a')
{
letter = (char)(letter + 26);
}
buffer[i] = letter;
}
return new string(buffer);
}
static void Main()
{
Console.WriteLine("Enter text to encrypt: ");
string buffer = Console.ReadLine();
Console.WriteLine("Enter value of shift: ");
int shift = int.Parse(Console.ReadLine());
string final = Caesar(buffer, shift);
Console.WriteLine(final);
}
}
Sie überprüfen, ob der verschobene Buchstabe '' ist. Sie müssen vor der Schicht überprüfen. EDIT: Wenn Sie die Leerzeichen vollständig entfernen möchten, müssen Sie in ein neues Zeichen [] schreiben, anstatt den Puffer [i] zu ändern. (Beachten Sie, dass Sie beim Entschlüsseln keine Leerzeichen haben werden) – TheSkimek
ja dummer Fehler: Testen Sie den Platz, bevor Sie die + Verschiebung ausführen. – Rob
Ja, es scheint jetzt offensichtlich zu sein, zumindest werde ich es in Zukunft erinnern –