2012-02-26 33 views
1

如果我想用VS2010在C#控制檯中創建一個應用程序,我怎麼才能讓它在我輸入文本的位置,然後它會做一個101010101010交換?如何獲得此C#控制檯交換密碼工作?

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

顯示'SwapCharacters' – 2012-02-26 05:38:22

+1

我認爲他想*我們*寫'SwapCharacters'。 – chroipahtz 2012-02-26 05:46:49

+0

我可以使用整個字符串的SwapCharacters? – 2012-02-26 05:49:23

回答

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

我想讓它變成這樣的字符: – 2012-02-26 23:35:03

+0

Player1 = lPyare1 – 2012-02-26 23:36:09

+0

所以基本上交換前2個字符,然後是第3個和第4個,然後是第5個和第6個,所以這裏有更多的例子:lolk = olkl,water = awetr。 – 2012-02-26 23:37:59

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