循环和字符串形成
本文关键字:字符串 循环 | 更新日期: 2023-09-27 18:13:10
我有一个非常简单的一般编程问题,但我不能得到我正在寻找的结果。基本上,我有一个名为dataGridView3(2列)的DataGridView,我希望用户能够输入尽可能多的字段,因为他/她想要并创建一系列基于这些字段的字符串。我的问题是,形成的字符串只能包含dataGridView的4个元素的时间,但与我目前的实现,它把每一行在第一个字符串(见示例)。
这是我目前正在使用的代码。
for (int i = 0; i < dataGridView3.Rows.Count; i++)
{
if (i % 4 == 0)
{
newPA61String += "PA61";
for (int j = i; j < dataGridView3.Rows.Count - 1; j++)
{
newPA61String += " " + (dataGridView3.Rows[j].Cells[0].Value.ToString().PadLeft(5, leftPaddingChar))
+ " " + (dataGridView3.Rows[j].Cells[1].Value.ToString().PadRight(6, rightPaddingChar));
}
newPA61String = newPA61String.PadRight(56, rightPaddingChar);
newPA61String += "'r'n";
}
}
使用6行数据,这段代码给出了如下输出:
PA61 00001 a 00002 b 00003 c 00004 d 00005 e 00006 f
PA61 00005 e 00006 f
我希望它看起来像这样;但是,我不能按我想要的方式操作它:
PA61 00001 a 00002 b 00003 c 00004 d
PA61 00005 e 00006 f
我的第一反应是在达到指定长度后截断第一个字符串,但是字符串是通过将所有内容放在一行中以"'r'n"分割而形成的,因此这样做将消除前4列之后的任何内容。
我知道解决办法可能是相当明显的,但我有一个这样的日子…
提前感谢,如果您需要其他信息,请询问。
变化:
for (int j = i; j < dataGridView3.Rows.Count - 1; j++)
:
for (int j = i; j < Math.Min(dataGridView3.Rows.Count, i + 4); j++)
你可以移动Math。最小表达式退出循环。
虽然我发现while循环对于这种事情更清晰
遍历要插入的PA61项的数量,而不是遍历行,然后像这样计算行和列(或单元格)的数量:
for (int i = 0; i < pa61ItemsCount; i++)
{
int row = i / 4;
int cell = i % 4;
...
}