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

How to replace every different char with another given char

我需要用 '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

您可以将其转换为 int 并添加 1:

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);

这行得通,因为每个 char 都有一个 numeric representation。但是,您可能需要 z 左右的一些额外逻辑(取决于您是否要将值限制为字母表)。

此外,如果您想进行加密而不是自己滚动,则此标记带有 : Use Cryptography。即使是安全专家也难以创建安全的。

你可以这样做

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