循环和字符串形成

本文关键字:字符串 循环 | 更新日期: 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;
    ...
}