如果我想在使用VS2010的C#控制台上制作应用程序,我怎样才能在输入文本的位置进行,然后它会进行101010101010交换?
lPyare1 = Player1
这是我目前所拥有的:
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();
}
答案 0 :(得分:1)
假设这是一个演示应用程序,你真正想要交换字符,而不是位(正确的密码所需),你可以使用这种方法:
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();
}
答案 1 :(得分:0)
解决方案如下所示:
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();
}