gpt4 book ai didi

c# - 最后一行被截断

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:45 26 4
gpt4 key购买 nike

我不知道为什么在最后的 csv 行中最后 4 列被截断

如果我简要描述一下这个过程,也许会有帮助。

最初,应用程序读取一个 csv,它在 ListView 中输出。可以选择各个 ListItem。对于每个项目,可以停止带日期的时间,然后将这些写入 csv。这是我覆盖整个 csv 的作品。

重新启动应用程序后只出现“未处理的异常”,因为覆盖的 csv 不再与原始文件匹配。所有记录都可以,除了最后一条,还有最后 4 个值:

_Dum "+", "+"_Vo "+", "+"_Bi "+", "+"_Da "

builder.AppendLine( "_Dum" + "," + "_Vo" + "," + "_Bi" + "," + "_Da" + "\r");

//Add Data

foreach (var data in varModule.List)
{
builder.AppendLine( data._Dum + ",");

if (data._Stu == "B" || data._Stu == "E")
{
builder.AppendLine(data._Vo + "," + data._Bi + "," + data._Dau);
};

//Line Break

builder.AppendLine("\r\n\n");
}
using (StreamWriter sw = new StreamWriter(csvFilePath))

{
sw.WriteLine(builder);
sw.Flush();
}

注意:如果我不编写 \r\n\n 和双 || 最后一个 csv 行将被提前删除。

最佳答案

看来你的程序并没有写出你需要的数据。您可能期望以下输出

_Dum,_Vo,_Bi,_Da<NewLine>

<ValueOf_Dum>,<ValueOf_Vo>,<ValueOf_Bi>,<ValueOf_Da><NewLine>

请注意,我特别添加了 <NewLine>到输出。 <NewLine>代表换行符,这取决于您的操作系统是 "\n" (在 Unix 系统上)或 "\r\n" (在 Windows 系统上)。在 .NET 中还有 Environment.NewLine , 返回特定于平台的换行符。请注意,没有 CSV“标准”,因此您可以选择要使用的换行符。看来你还不清楚,所以你首先要做出那个决定。

接下来你要考虑的是 StringBuilder.Append 之间的区别和 StringBuilder.AppendLine . Append只需在字符串末尾添加指定的文本,而 AppendLine添加文本,后跟 Environment.NewLine 返回的字符.

在您的代码中,您始终使用 AppendLine这不是你想要的,因为你显然想要构建线条并将它们作为一个整体添加。这样做的方式是,您始终在某些值之间添加换行符,这在 CSV 中意味着新记录的开始。

您不仅无意中在文件中添加了换行符,而且您手动添加的换行符也不一致。在标题行中使用 "\r" (这在 Unix Windows 中是不行的)。稍后你使用 "\r\n\n" (甚至后面跟着由 AppendLine 添加的新行),它在 Unix(因为开头的 "\r")或 Windows(因为 "\n" 而没有前面的 "\r")中效果不佳结束)。

你的下一个问题是这部分代码:

if (data._Stu == "B" || data._Stu == "E")
{
builder.AppendLine(data._Vo + "," + data._Bi + "," + data._Dau);
};

您正在为 _Vo 添加值, _Bi_Dau什么时候_Stu"B""E" .当_Stu 时你会做什么?还有其他值(value)吗?没有什么!这意味着您在那里生成了不完整的记录,这很可能是您描述的问题的原因。您需要决定在 else 情况下应该发生什么并将其合并到您的程序中。

一般来说,您似乎并不完全清楚程序的预期流程、CSV 格式以及您使用的指令在代码中的作用。要解决您的问题,您需要执行以下步骤:

  1. 清楚地了解所需的输出以及生成该输出的程序的外观。
  2. 了解 CSV 格式及其中换行符的重要性。
  3. 确定要使用的新行格式("\r\n""\n"Environment.NewLine)并在整个程序中始终如一地使用它。
  4. 使用Append您只想添加文本和 AppendLine 的位置当您希望添加的文本后跟 Environment.NewLine 时.
  5. 弄清楚当 Stu 时会发生什么不是 "B""E"并将此案例添加到您的程序中。
  6. 在调试器中单步执行您的程序,以确认它正在按照您的预期执行。

关于c# - 最后一行被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46804112/

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