簡體   English   中英

將定界字符串轉換為二維數組

[英]Converting a delimited string to 2-D array

我有兩位數字的網格,寫為一個用換行符和空格分隔的字符串,例如:

string grid = "58 96 69 22 \n" +
              "87 54 21 36 \n" +
              "02 26 08 15 \n" +
              "88 09 12 45";

我想將其拆分為4×4數組,以便可以通過諸如separatedGrid[i, j]類的方法對其進行訪問。 我知道我可以使用grid.Split(' ')分隔每一行中的數字,但是如何從中獲得一個二維數組呢?

是的,使用split像這樣:

string grid = "58 96 69 22 \n87 54 21 36 \n02 26 08 15 \n88 09 12 45";

var jagged = grid.Split('\n').Select(
            x => new string[4] { x.Split(' ')[0], x.Split(' ')[1], x.Split(' ')[2], x.Split(' ')[3] }
            ).ToArray();

如果您想要二維數組:

var _2D = new String[jagged.Length, jagged[0].Length];
for (var i = 0; i != jagged.Length; i++)
    for (var j = 0; j != jagged[0].Length; j++)
        _2D[i, j] = jagged[i][j];

結果:

在此處輸入圖片說明

因此,您想要的是將定界的多行字符串轉換為2D數組:

string grid = "58 96 69 22 \n" +
    "87 54 21 36 \n" +
    "02 26 08 15 \n" +
    "88 09 12 45";

var lines = grid.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)
                .Select(x => x.Trim().Split(' ')).ToArray();

int numberOfRows = lines.Length;
int maxNumberOfColumns = lines.Max(x => x.Length);
string[,] separatedGrid = new string[numberOfRows, maxNumberOfColumns];

for (int i = 0; i < lines.Count(); i++)
{
    string[] values = lines.ElementAt(i);
    for (int j = 0; j < values.Length; j++)
    {
        separatedGrid.SetValue(values[j], i, j);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM