如何在c#中将二维整数数组元素转换为字符串?

时间:2016-05-26 10:25:29

标签: c# arrays unity3d unityscript

我想在退出游戏之前保存4 * 4网格的网格位置和整数。

我以为我可以将数组转换为字符串并使用播放器首选项保存以供下次使用。

我将数字保存在二维整数数组中。现在如何将它转换为c#中的字符串。

2 个答案:

答案 0 :(得分:3)

将数组转换为StringBuilder时,可以使用string。您可以按行","(或任何其他符号)拆分行中的每个元素,行可以按"."(或任何其他符号)拆分,因此当您将字符串解析为int[,]数组时你不需要知道数组大小:

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

试试这个。