gpt4 book ai didi

c# - 将字符串拆分为字符串数组而不丢失文本顺序

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:18 25 4
gpt4 key购买 nike

我有一个问题让我绞尽脑汁 7 天,所以我决定向您寻求帮助。这是我的问题:

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

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)

关于c# - 将字符串拆分为字符串数组而不丢失文本顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com