繁体   English   中英

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

尝试这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM