-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 に答える