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

how to convert two dimensional integer array elements into string in c#?

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

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

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

将数组转换为 string 时可以使用 StringBuilder。您可以按 "," (或任何其他符号)拆分行中的每个元素,并且可以按 "." (或任何其他符号)拆分行,因此当您将字符串解析为 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;
}

我假设您已经在下面的 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();
}

试试这个。