Я бы сделал это, используя Dictionary
и linq.Обратите внимание, что любые символы (цифры, пробелы, символы), отсутствующие в словаре, не будут преобразованы.Когда я выполняю поиск по Dictionary
, обратите внимание, как я устанавливаю вывод char
в текущее значение char
foreach.Кроме того, так как это чувствительно к регистру, я должен преобразовать строку в верхний регистр.
public class Program
{
public static void Main(string[] args)
{
string encryptedOutput = "";
var decryptedInput = "this is a test string";
Dictionary<char,char> cipherTable =
new Dictionary<char,char>{
{'A', 'R'},
{'B', 'B'},
{'C', 'T'},
{'D', 'O'},
{'E', 'P'},
{'F', 'M'},
{'G', 'Z'},
{'H', 'S'},
{'I', 'J'},
{'J', 'K'},
{'K', 'I'},
{'L', 'Y'},
{'M', 'P'},
{'N', 'G'},
{'O', 'L'},
{'P', 'V'},
{'Q', 'C'},
{'R', 'X'},
{'S', 'N'},
{'T', 'E'},
{'U', 'H'},
{'V', 'F'},
{'W', 'A'},
{'X', 'U'},
{'Y', 'Q'},
{'Z', 'D'}
};
encryptedOutput = string.Join("",decryptedInput
.ToUpper()
.ToArray()
.Select(c => {char outChar = c; cipherTable.TryGetValue(c, out outChar); return outChar;}));
Console.WriteLine(encryptedOutput);
}
}