2016-05-26 91 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(); 
} 

试试这个。

相关问题