如何用另一个给定的字符替换每个不同的字符
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
左右的一些额外逻辑(取决于您是否要将值限制为字母表)。
此外,如果您想进行加密而不是自己滚动,则此标记带有 crypt: Use Cryptography。即使是安全专家也难以创建安全的。
你可以这样做
string abc = "abcdefghijklmnopqrstuvwxyz";
string bcd = new string(abc.Select(x => x == 'z' ? 'a' : (char)(x + 1)).ToArray());
我需要用 '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
左右的一些额外逻辑(取决于您是否要将值限制为字母表)。
此外,如果您想进行加密而不是自己滚动,则此标记带有 crypt: Use Cryptography。即使是安全专家也难以创建安全的。
你可以这样做
string abc = "abcdefghijklmnopqrstuvwxyz";
string bcd = new string(abc.Select(x => x == 'z' ? 'a' : (char)(x + 1)).ToArray());