C# 在不丢失文本顺序的情况下将字符串拆分为字符串数组

C# 在不丢失文本顺序的情况下将字符串拆分为字符串数组,c#,arrays,string,split,.net-2.0,C#,Arrays,String,Split,.net 2.0,我有一个问题,我伤了头7天,所以我决定向你寻求帮助。我的问题是: 我从datagridview(仅2个单元格)读取数据,并在stringbuilder中填充所有给定数据,实际上它的文章和价格类似于发票(bill)。现在,我将在stringbuilder中获得的所有内容添加到just string中,目的是在第行下拆分字符串行,这部分代码可以工作,但不会像我以前那样工作。文章是一个比另一个低,但价格是一个价格,更左一个更右,不是在一条垂直线上,类似这样: Bread 10$ Egg 4$

我有一个问题,我伤了头7天,所以我决定向你寻求帮助。我的问题是:

我从datagridview(仅2个单元格)读取数据,并在stringbuilder中填充所有给定数据,实际上它的文章和价格类似于发票(bill)。现在,我将在stringbuilder中获得的所有内容添加到just 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);
你试过这个吗


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

还可以使用自动增长的
列表
,而不是使用从拆分之前刚放在一起的内容中获得的数组:

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());
}
您还可以使用
PadLeft
方法右对齐金额

row.Cells[10].Value.ToString().Trim().PadLeft(10)

为什么不直接构建
行[]
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();
}
row.Cells[10].Value.ToString().Trim().PadLeft(10)