我有一个差不多完成的程序。问题在于,当我打印出" new"除了excel中的第一列外,每个文件的CSV文件都是正确的。它打印信息两次,但仅在第一列中打印。我查看了整个代码,无法看到我将两次打印出来或者两次调用令牌。
该程序的目的是简单地重新组织列并将它们格式化为所需的方式。我正在访问的令牌位于inputBuffer[23]
位置,我将其设置为等于outputBuffer[0]
,我只做了一次,但是当我运行程序并检查文件时,第一列是第一条记录应保留值841
,但它会出现841841
,我不知道如何。所有其他专栏都非常好。
有人能发现错误吗?
/*
* This method uses the fields (array elements) in the output
* buffer to assemble a CSV record (string variable). The
* CSV record is then written to the output file.
*/
public static void BuildRecordAndWriteOutput()
{
string record = outputBuffer[0];
for (int i = 0; i < outputBuffer.Length; i++)
{
if (outputBuffer[i].Contains(","))
{
string x = "\"" + outputBuffer[i] + "\"";
record += x;
}
else
{
record += outputBuffer[i];
}
if (i < outputBuffer.Length - 1)
{
record += ",";
}
}
/*for (int i = 1; i < outputBuffer.Length; i++)
{
record = record + "," + outputBuffer[i];
}*/
output.WriteLine(record);
}
static void Main(string[] args)
{
input.SetDelimiters(",");
/*
* This loop reads input data and calls methods to
* build an output record and write data to a CSV file.
*/
while (!input.EndOfData)
{
inputBuffer = input.ReadFields(); // Read a CSV record in to the inputBuffer.
SetOutputBufferDefaultValues(); // Put default values in the output buffer.
MapInputFieldsToOutputFields(); // Move fields from the input buffer to the output buffer.
BuildRecordAndWriteOutput(); // Build record from output buffer and write it.
}
Console.WriteLine("done");
input.Close();
output.Close();
Console.Read();
}
代码中有更多数据,截至目前我尚未发布所有数据,但如果有帮助我可以。
谢谢!
答案 0 :(得分:1)
在BuildRecordAndWriteOutput
中,您指定记录:
string record = outputBuffer[0];
然后在0开始循环,追加 outputbuffer[0]
进行记录:
for (int i = 0; i < outputBuffer.Length; i++)
{
record += ....
}
这就是导致您的第一列重复数据的原因。
您可以通过在循环之前将记录初始化为空字符串来解决此问题:
string record = "";