gpt4 book ai didi

c# - 删除 CSV 文件中的换行符

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

需要打开我的 CSV 文件 并用 C# 替换第 44 列中的换行符。

这是 CSV 文件中的字符串:

9|D60||08/12/2018 19:09:19|08/12/2018 19:30:07|00:20:48|08/12/2018 22:00|A|L|M|D60 SM |D60 MA    |0|19|0|3175|0|3|00:03:25|20,98|0,017|0|0|NO|NO|-|CO|CH|CA|-|D60 - B|DP6 - F|DP6 - L|NO|-|-|DP6 - L|- - -|ND|ND|NO|-|NO|--dic

-acc |-|-|0|0|

我试过这段代码没有成功:

   output = System.Web.HttpContext.Current.Server.MapPath("csv/target_" + DateTime.Now.AddDays(-1).ToString("dd-MM-yyyy") + ".csv")
string so = System.IO.File.ReadAllText(output);
string[] arr = so.Split('-');
for (int i = 2; i < arr.Length; i = i + 44)
{
arr[i] = arr[i].Replace(Environment.NewLine, " ");
}
string res = String.Join("", arr);
System.IO.File.WriteAllText(output, res);

对于只有一行的新输出:

9|D60||08/12/2018 19:09:19|08/12/2018 19:30:07|00:20:48|08/12/2018 22:00|A|L|M|D60 SM |D60 MA    |0|19|0|3175|0|3|00:03:25|20,98|0,017|0|0|NO|NO|-|CO|CH|CA|-|D60 - B|DP6 - F|DP6 - L|NO|-|-|DP6 - L|- - -|ND|ND|NO|-|NO|--dic-acc |-|-|0|0|

如何解决这个问题?

最佳答案

好的,让我们尝试新的方法。

思路是逐行读入csv文件。然后,对于每一行,通过在管道符号分隔符上拆分它来检查有多少字段。

如果少于 49 个字段(这是我在您的示例中计算的字段数),请将下一行附加到它。将所有这些行(行)存储在一个列表中,最后将其作为一个新文件输出。

int fieldsExpected = 49;  // I have counted 49 fields per row of the CSV file. You should check this!
string fileOut = "<PATH-AND-FILENAME-FOR-THE-OUTPUT-CSV>";
string fileIn = System.Web.HttpContext.Current.Server.MapPath("csv/target_" + DateTime.Now.AddDays(-1).ToString("dd-MM-yyyy") + ".csv");

// Read the file line by line.
string[] lines = System.IO.File.ReadAllLines(fileIn);
List<string> newLines = new List<string>();

// If your csv file has a header row, uncomment this next line
// newLines.Add(lines[0]);
// and have the loop start at 'i = 1'
for (int i = 0; i < lines.Length; i++) {
string temp = lines[i];
// Split the line on the separator character. In this case the pipe symbol "|"
string[] fields = temp.Split('|');
// Check if the number of fields in this line is correct.
// It will be less if any of the fields contained a line break.
// If this is the case, append the next line to this one.
while (fields.Length < fieldsExpected && i < (lines.Length - 1)) {
i++;
temp += lines[i];
fields = temp.Split('|');
}
newLines.Add(temp);
}

System.IO.File.WriteAllLines(fileOut, newLines.ToArray());

关于c# - 删除 CSV 文件中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53706025/

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