2016-05-26 10 views
1

Ich möchte meine Gitterpositionen von 4 * 4 Gitter mit Ganzzahl speichern, bevor Sie das Spiel beenden.Wie konvertiert man zweidimensionale Integer-Array-Elemente in eine Zeichenfolge in C#?

Ich dachte, ich könnte Array in String konvertieren und speichern Sie es mit Player-Einstellungen für die nächste Verwendung.

Ich speicherte die Zahlen im zweidimensionalen Integer-Array. jetzt wie man es in C# in string umwandelt.

+1

Es wäre hilfreicher, wenn Sie etwas Code gepostet haben, aber die einfachste Methode besteht darin, Ihre Objekte in XML zu deserialisieren und das Ergebnis zu speichern. Dann können Sie sie wieder in Serialisieren, wenn das Spiel neu geladen wird. https://msdn.microsoft.com/en-gb/library/mt656718.aspx –

Antwort

2

Sie können StringBuilder verwenden, wenn Sie Ihr Array in string konvertieren. Sie können jedes Element in einer Zeile nach "," (oder einem anderen Symbol) aufteilen, und Zeilen können durch "." (oder ein anderes Symbol) geteilt werden. Wenn Sie also die Zeichenfolge in das Array nt[,] analysieren, müssen Sie die Array-Größen nicht kennen:

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

Dann können Sie Ihre Array von String wieder her:

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

ich nehme an, Sie haben Ihr Ergebnis bereit in temp Variable unten,

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

Versuchen Sie es.

Verwandte Themen