2016-05-26 149 views
1

我想在退出遊戲之前用整數將4 * 4網格的網格位置保存起來。如何將二維整數數組元素轉換爲C#中的字符串?

我以爲我可以將數組轉換爲字符串並使用播放器首選項保存以供下次使用。

我將這些數字保存在二維整數數組中。現在如何將它轉換成C#中的字符串。

+1

如果您發佈了一些代碼,它會更有幫助,但最簡單的方法是將對象反序列化爲XML並存儲結果。然後,當遊戲重新加載時,您可以將它們串連回來。 https://msdn.microsoft.com/en-gb/library/mt656718.aspx –

回答

2

當您將陣列轉換爲string時,您可以使用StringBuilder。你可以將","(或任何其他符號)中的每一個元素分開,並且行可以被"."(或任何其他符號)分開,所以當你將字符串解析爲時,你不需要知道數組的大小:

public string ArrayToString(int[,] toConvert) 
{ 
    StringBuilder sb = new StringBuilder(); 

    for (int a = 0; a < toConvert.GetLength(0);a++) 
    { 
     for (int b = 0; b < toConvert.GetLength(1);b++) 
     { 
      sb.Append(toConvert[a,b].ToString() + ","); 
     } 

     sb.Append("."); 
    } 

    return sb.ToString(); 
} 

然後你就可以從字符串恢復數組:

public int[,] ArrayFromString(string toConvert) 
{ 
    string[] rows = toConvert.Split('.'); 
    string[] elements = rows[0].Split(','); 

    int[,] result = new int[rows.Length, elements.Length];   

    for (int a = 0; a < rows.Length; a++) 
    { 
     string[] items = rows[a].Split(','); 

     for (int b = 0; b < items.Length; b++) 
     { 
      result[a,b] = Convert.ToInt32(items[b]); 
     } 
    }  

    return result; 
} 
1

我假設你有你的結果在下面temp變量準備,

var output = new string[temp.GetUpperBound(0)+1]; 
for (int i = 0; i<=temp.GetUpperBound(0); i++) 
{ 
    var sb = new StringBuilder(temp.GetUpperBound(1)+1); 
    for (int j = 0; j<=temp.GetUpperBound(1); j++) 
     sb.Append(temp[i,j]); 
    output[i] = sb.ToString(); 
} 

試試這個。

相關問題