我如何才能让这个C#控制台交换密码工作
本文关键字:控制台 交换 密码 工作 | 更新日期: 2023-09-27 18:25:54
如果我想用VS2010在C#控制台中制作一个应用程序,我如何在输入文本的地方制作它,然后它会进行101010101010交换?
lPyare1=播放器1
这就是我目前拥有的:
static void Main()
{
Console.WriteLine("Enter String Here:");
//
// Swap characters in the string.
//
string value1 = Console.ReadLine();
string swap1 = SwapCharacters(value1, 0, 1);
Console.WriteLine(swap1);
Console.ReadKey();
}
假设这是用于一个演示应用程序,在该应用程序中,您真正想要交换字符,而不是比特(这在正确的密码中是必需的),那么您可以使用以下方法:
static string SwapCharacters(string s, char c1, char c2)
{
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < s.Length; ++i)
if (s[i] == c1)
sb[i] = c2;
else if (s[i] == c2)
sb[i] = c1;
return sb.ToString();
}
您需要使用char
参数而不是int
:来调用它
string swap1 = SwapCharacters(value1, '0', '1');
编辑:实现您在评论中的要求:
static string SwapCharacters(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i += 2)
{
if (i < s.Length - 1)
sb.Append(s[i + 1]);
sb.Append(s[i]);
}
return sb.ToString();
}
解决方案如下所示:
string s_01 = SwapCharacters("lPyare1", 0, 1); // "Player1"
string s_12 = SwapCharacters("Palyre2", 1, 2); // "Player2"
}
static string SwapCharacters(string source, int a, int b) { // a < b
StringBuilder sb = new StringBuilder(source);
for(int i = 0; i < source.Length; i++) {
if(i % (b + 1) != b) continue;
char tmp = sb[i - (b - a)];
sb[i - (b - a)] = sb[i];
sb[i] = tmp;
}
return sb.ToString();
}