将字符串拆分为字符串数组,而不会丢失文本顺序
本文关键字:字符串 文本 顺序 拆分 数组 | 更新日期: 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 New
或 Consolas
)显示字符串时,这种格式设置方式才有效。像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];