如何用另一个给定的字符替换每个不同的字符

时间:2019-05-25 15:42:32

标签: c# cryptography caesar-cipher

我需要用“ b”字符​​替换每个“ a”字符,用“ c”字符替换每个“ b”字符​​,依此类推。我试图用if来实现,但是每个字符的代码都非常长。是否存在一种无需if或switch或诸如此类的方法如何实现此目的的方法?

        char[] chars = new char[inputString.Length];
        for (int i = 0; i < inputString.Length; i++)
        {
            if (inputString[i] == 'a')
                chars[i] = 'b';
            else if (inputString[i] == 'b')
                chars[i] = 'c';
            else if (inputString[i] == 'c')
                chars[i] = 'd';
            else if (inputString[i] == 'd')
                chars[i] = 'e';
            else if (inputString[i] == 'e')
                chars[i] = 'f';
            else if (inputString[i] == 'f')
                chars[i] = 'g';
            else if (inputString[i] == 'g')
                chars[i] = 'h';
            else
            {
                chars[i] = inputString[i];
            }
        }
        string outputString = new string(chars);

这是我需要更换的方式:

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

a b c d e f g h i j k l m n o p q r s t u v w x y z
b c d e f g h i j k l m n o p q r s t u v w x y z a


0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0

示例: 字符串:TEXTcsharp#2367 结果:SDWSdtibsq#7632

2 个答案:

答案 0 :(得分:0)

您可以将其转换为#level-title { font-family: 'Press Start 2P', cursive; font-size: 3rem; margin: 2%; color: #FEF2BF; } 并添加1:

int

这可行,因为每个char[] chars = new char[inputString.Length]; for (int i = 0; i < inputString.Length; i++) { chars[i] = (char)(inputString[i] + 1); } string outputString = new string(chars); 都有一个numeric representation。但是,对于char左右,您可能需要一些额外的逻辑(取决于是否要将值限制为字母)。

此外,由于此标记有:如果要进行加密,请使用Cryptography,而不要自己动手加密。甚至安全专家在创建安全的人时也遇到问题。

答案 1 :(得分:0)

您可以这样做

    string abc = "abcdefghijklmnopqrstuvwxyz";
    string bcd = new string(abc.Select(x => x == 'z' ? 'a' : (char)(x + 1)).ToArray());