我如何才能让这个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();
    }

我如何才能让这个C#控制台交换密码工作

假设这是用于一个演示应用程序,在该应用程序中,您真正想要交换字符,而不是比特(这在正确的密码中是必需的),那么您可以使用以下方法:

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