-1

我正在尝试解决问题并需要解决方案(好的-我可能会得到负面的代表)但是这里是:

假设我有以下内容:

Actual: A B D E F G H I J K L M N O P Q R S T U V W X Z 
Change: X F S M E P U T V L Q H K I J W A D O R Z B G N 

而且,基本上,我想用“更改”列表中的相应字符替换“实际”列表中包含的字符串中的所有字符。如果某些字符不在“实际”列表中,它必须保持不变。

我试图这样做,但是,它不起作用:

foreach (var c in charList) {
    if (input.Contains (c.Key)) {
        foreach (var a in charList) {
            decrypted[i] = a.Key;
        }
        i++;
    }
}

我基本上只是得到“N”值..有什么想法吗?谢谢

4

3 回答 3

4

我的即兴创作:

1.首先创建一个字典

        List<char> Actual = "A B D E F G H I J K L M N O P Q R S T U V W X Z".Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s[0]).ToList();
        List<char> Change = "X F S M E P U T V L Q H K I J W A D O R Z B G N".Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s[0]).ToList();
        Dictionary<char, char> ReplacemetRules = Actual.ToDictionary(s => s, s => Change[Actual.IndexOf(s)]);

要不就

Dictionary<char, char> ReplacemetRules = new Dictionary<char, char>
        {
            {'T','F'},
            {'E','A'},
            {'S','Q'}
        };

2.假设我们有一个输入字符串:

     string input = "TEST";

然后只需使用:

        string output = string.Concat(input.Select(c => ReplacemetRules.ContainsKey(c) ? ReplacemetRules[c] : c)));
于 2012-08-20T04:29:19.390 回答
1

看一下这个:

        string InputString = "TEST";
        string EncryptedString = string.Empty;
        string IfContains =  "ABDEFGHIJKLMNOPQRSTUVWXZ";
        string ReplaceWith = "XFSMEPUTVLQHKIJWADORZBGN";

        foreach (char InputChar in InputString)
        {
            int IndexToReplace = IfContains.IndexOf(InputChar);

            if (IndexToReplace >= 0)
            {
                EncryptedString = string.Concat(EncryptedString, ReplaceWith[IndexToReplace]);
            }
        }

更新:你应该注意案例。执行不区分大小写的搜索将是一个更好的主意。

于 2012-08-20T02:34:00.770 回答
0
foreach (var c in charList) {
    if (input.Contains (c.Key)) {
        foreach (var a in charList) {
            decrypted[i] = a.Key;
        }

        i++;
    }
}
于 2014-02-14T03:51:37.690 回答