将字符串拆分为字符串数组,而不会丢失文本顺序

本文关键字:字符串 文本 顺序 拆分 数组 | 更新日期: 2023-09-27 17:55:42

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

我从datagridview(只有2个单元格)读取数据,并在字符串生成器中填充所有给定的数据,它实际上是文章和价格,如发票(账单)。现在,我将我在字符串生成器中得到的所有内容都添加到字符串中,目的是将字符串行拆分为行,并且我的这部分代码有效,但不会像我那样工作。文章是一个在另一个下面,但价格是一个价格更左另一个更右,而不是全部在一条垂直线上,像这样:

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>,而不是使用您之前刚刚组合在一起时获得的数组:

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)

你试过这个字符串拆分方法吗?

String myString = "Bread         ;10$;";
String articleName = myString.split(';')[0];
String price = myString.split(';')[1];