2016-07-23 61 views
2

我有新行和空格,例如分隔作为字符串写入的两位数字的网格:转换分隔字符串到2-d阵列

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

我想将其分成4- by-4 array,这样我可以通过像separatedGrid[i, j]这样的东西来访问它。我知道我可以使用grid.Split(' ')来分隔每一行中的数字,但是如何从中得到一个二维数组?

回答

2

所以,你想要什么是将分隔的多行字符串转换为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); 
    } 
} 
2

是使用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(); 

如果你想有一个2-d数组:

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]; 

结果:

enter image description here