将字符串分割成二维数组

3
在C#控制台应用程序中,如何将分割字符串转换为二维数组?
char[,] table2x2 = new char[2, 2]; 
string myString = "11A23A4A5A"; 
string[] splitA = myString.Split(new char[] { 'A' });

因此,输出结果将会是:
Console.WriteLine(table3x3[0, 0]); //output: 11
Console.WriteLine(table3x3[0, 1]); //output: 23
Console.WriteLine(table3x3[1, 0]); //output: 4
Console.WriteLine(table3x3[1, 1]); //output: 5

回到原问题。 提前致谢!


1
如果table2x2的元素类型为char,则您永远不会得到该输出。您应该将其更改为stringint(这需要解析)。 - Mohammad Dehghan
你修改后,我不太明白 table3x3 的索引是如何构建输出的? - Mohammad Dehghan
我的确犯了几个错误。所以字符串中的每个字符都在数组中。然而,只有在'A'之后切割的数字将被显示出来。其他部分将为空白。 - Asmo
索引现在有意义了,但是空格没有!您究竟想要任何“A”后面的第一个数字或者任何“A”之后出现的数字吗?两者都不像您的预期输出,我不理解输出。 - Mohammad Dehghan
任何 A 后面的第一个数字都将在数组内。我已经尝试了几次,例如 for (int i = 1, j = 0; i < 4; i++, j = j + splitA[i].Length) { table3x3[0, j] = splitA[i][0].ToString(); } 但我真的不知道如何让它工作。 - Asmo
1
请问您能解释一下这些空缺吗?请编辑问题并准确解释您所满意的输出是如何生成的。 - Mohammad Dehghan
1个回答

7
// your code, char[,] replaced by string[,]
string[,] table2x2 = new string[2, 2];  
string myString = "11A23A4A5A"; 
string[] splitA = myString.Split(new char[] { 'A' }); 

// this converts splitA into a 2D array
// Math.Min is used to avoid filling past the array bounds
for (int i = 0; i < Math.Min(splitA.Length, 2*2); i++) {
    table2x2[i / 2, i % 2] = splitA[i];
}

它对我的先前问题非常有效。不幸的是,我改变了问题的格式。 - Asmo
@Asmo:那么我建议您提出一个新问题,因为现在的答案已经不再适用于这个问题了。;-) - Heinzi
我正在考虑提出一个新问题。但似乎需要进行一些修改,所以我决定编辑和修改问题。是否会有类似的方法? - Asmo
@Asmo:你想如何将值分配给数组并不清楚。我认为最好将这个问题恢复到原始形式,并开始一个新的问题,更详细地说明哪个字符串应该成为哪个数组 - Heinzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接