如何替换字符串中的多个字符以进行密码解密

问题描述

我想在一个文本框中输入一个加密的密码,然后按一个按钮在另一个文本框中输入解密的密码。 加密非常简单,我有一个excel表,其中每个字符都有其等效项。所以基本上我需要用每个字符替换掉的字符替换,我不知道这是否有意义...

示例:

Conversion Table : 
@ = p
# = a
) = s

Input string : @#))
Output string : pass

最简单的方法是什么?

解决方法

您可以使用将“已加密”字符映射到“已解密”字符的字典:

var repl = new Dictionary<char,char> { {'@','p'},{'#','a'},{')','s'} };

并通过LINQ对其进行评估

var input = "@#))";
var output = new string(input.Select(c => repl[c]).ToArray());

或循环

var sb = new StringBuilder();
foreach (var c in input)
{
  sb.Append(repl[c]);
}
var output = sb.ToString();
,

这够简单吗?

var map = new (char before,char after)[]
{
    ('@','p'),('#','a'),(')','s'),};

var input = "@#))";

var output = map.Aggregate(input,(a,x) => a.Replace(x.before,x.after));

或更老的学校:

var output = input;
foreach (var m in map)
{
    output = output.Replace(m.before,m.after);
}