C#更有效地将字符写入二维数组
我有一个120个字符的文本字符串。我想制作二维字符数组,6行20个字符。我想知道我是否可以用更少的变量更有效地完成这项工作?谢谢 循环:C#更有效地将字符写入二维数组,c#,C#,我有一个120个字符的文本字符串。我想制作二维字符数组,6行20个字符。我想知道我是否可以用更少的变量更有效地完成这项工作?谢谢 循环: inti=0,u=0; 对于(int x=0;x
inti=0,u=0;
对于(int x=0;x<120;x++)
{
数组[i,u]=文本[x];
u++;
如果(u==19)
{
i++;
u=0;
}
}
您可以这样做:
int numRows = 6;
int numCols = 20;
for (int rowIdx = 0; rowIdx < numRows; rowIdx++)
{
for (int colIdx = 0; colIdx < numCols; colIdx++)
{
array[rowIdx, colIdx] = text[rowIdx * numCols + colIdx];
}
}
int numRows=6;
int numCols=20;
对于(int-rowIdx=0;rowIdx
您可以使用ToCharray方法,并且只能使用一个循环:
char [][] array = new char[6][];
for (int i = 0; i < 6; i++)
{
array[i] = text.Substring(i * 20, 20).ToCharArray();
}
char[][]数组=新字符[6][];
对于(int i=0;i<6;i++)
{
数组[i]=text.Substring(i*20,20.ToCharArray();
}
在.Net中,由于边界检查,锯齿状数组比矩形数组更有效
var s = string.Concat(Enumerable.Range(0, 6).Select(i => i + "123456789 123456789"));
var a = new char[][] { s.ToCharArray(0, 20), s.ToCharArray(20, 20), s.ToCharArray(40, 20),
s.ToCharArray(60, 20), s.ToCharArray(80, 20), s.ToCharArray(100, 20) };
// or a bit less efficient LINQ version
char[][] arr = Enumerable.Range(0, 6).Select(i => s.ToCharArray(i * 20, 20)).ToArray();
恐怕还是错了。我想应该是
rowIdx*20+colIdx
。
var s = string.Concat(Enumerable.Range(0, 6).Select(i => i + "123456789 123456789"));
var a = new char[][] { s.ToCharArray(0, 20), s.ToCharArray(20, 20), s.ToCharArray(40, 20),
s.ToCharArray(60, 20), s.ToCharArray(80, 20), s.ToCharArray(100, 20) };
// or a bit less efficient LINQ version
char[][] arr = Enumerable.Range(0, 6).Select(i => s.ToCharArray(i * 20, 20)).ToArray();