2

我有一个问题困扰了我 7 天,所以我决定向您寻求帮助。这是我的问题:

我从 datagridview 读取数据(只有 2 个单元格),并在 stringbuilder 中填写所有给定数据,它实际上是文章和价格,如发票(账单)。现在,我将在 stringbuilder 中获得的所有内容添加到 string 中,目的是在 line 下拆分 string 行,我的代码的那部分工作但不是我不会的。文章是一个在另一个之下,但价格是一个价格更左另一个更右,而不是全部在一条垂直线上,如下所示:

Bread  10$
Egg    4$
Milk   5$

我的代码:

string[] lines;
StringBuilder sbd = new StringBuilder();
foreach (DataGridViewRow rowe in dataGridView2.Rows)
{
    sbd.Append(rowe.Cells[0].Value).Append(rowe.Cells[10].Value);
    sbd.Append("\n");
}
sbd.Remove(sbd.Length - 1, 1);
string userOutput = sbd.ToString();
lines = userOutput.Split(new string[] { "\r", "\n" },    
StringSplitOptions.RemoveEmptyEntries);
4

2 回答 2

1

您可以使用该Trim方法来删除现有的前导和尾随空格。您可以自动添加正确数量的空格以PadRight获得指定的总长度。

还可以使用List<string>自动增长的 a,而不是使用从之前拆分的数组中获得的数组:

List<string> lines = new List<string>();
foreach (DataGridViewRow row in dataGridView2.Rows) {
    lines.Add( row.Cells[0].Value.ToString().Trim().PadRight(25) +
               row.Cells[10].Value.ToString().Trim());
}

但请记住,这种格式化方式只有在以等宽字体(如Courier NewConsolas)显示字符串时才有效。像比例字体Arial会产生锯齿状的列。

Count或者,您可以通过从属性中读取行数来创建具有正确大小的数组

string[] lines = new string[dataGridView2.Rows.Count];
for (int i = 0; i < lines.Length; i++) {
    DataGridViewRow row = dataGridView2.Rows[i];
    lines[i] = row.Cells[0].Value.ToString().Trim().PadRight(25) +
               row.Cells[10].Value.ToString().Trim();
}

您还可以使用该PadLeft方法来右对齐金额

row.Cells[10].Value.ToString().Trim().PadLeft(10)
于 2013-01-24T20:35:24.517 回答
0

您是否尝试过这种字符串拆分方法

String myString = "Bread         ;10$;";

String articleName = myString.split(';')[0];
String price = myString.split(';')[1];
于 2013-01-24T20:18:52.423 回答