字符串在写入CSV文件时缺少最后2个字符

本文关键字:最后 2个 字符 文件 CSV 字符串 | 更新日期: 2023-09-27 18:27:16

我有一个CSV文件需要操作,操作它很顺利,直到它写入CSV文件,它才缺少字符串的最后一个字符。我不知道为什么,因为当我循环浏览字符串列表时,它会显示最后2个字符,但当我打开CSV文件时,最后2个字符串不在那里。

我正在操作的CSV文件看起来像。。

FirstName, Phone, Date, Appointment Time
dan, 123-456-7890, 12/1/2014, 1030
mary, 123-456-7890, 12/2/2014, 100

所以,我把它修改成这个

FirstName, Phone, Date, Appointment Time
dan, 123-456-7890, 12/1/2014 10:30 am
mary, 123-456-7890, 12/2/2014 1:00 pm

但是当它写入CSV文件时,am/pm被忽略了。

代码是

static void Main(string[] args)
{
string[] readData = File.ReadAllLines(@"C:'TestArea'Data extraction.csv");
List<string> finishedData = new List<string>(readData);
finishedData.RemoveAt(0);
List<string> allData = new List<string>();
foreach (var a in finishedData)
{
    int lastIndex;
    lastIndex = a.LastIndexOf(',');
    string unformattedTime = a.Substring(lastIndex + 1);
    string formatTime = string.Empty;
    if (unformattedTime.Length < 4)
    {
        string hour = Convert.ToString(unformattedTime).Substring(0, 1);
        string minute = Convert.ToString(unformattedTime).Substring(1, 2);
        formatTime = hour + ":" + minute;
    }
    else
    {
        string hour = Convert.ToString(unformattedTime).Substring(0, 2);
        string minute = Convert.ToString(unformattedTime).Substring(2, 2);
        formatTime = hour + ":" + minute;
    }
    string finishedLine = a.Remove(lastIndex) + " " + DateTime.Parse(formatTime).ToShortTimeString().ToLower();
    //Console.WriteLine(finishedLine);
    allData.Add(finishedLine);
}
foreach (String s in allData)
    Console.WriteLine(s);
File.WriteAllLines(@"C:'PIA'Test.csv", allData);
Console.ReadLine();

}

字符串在写入CSV文件时缺少最后2个字符

由于您的文件将被计算机系统使用,因此数据在Excel中看起来不太正确也没关系。文件的实际内容是否为系统所期望的格式才是最重要的。

Excel可能会混淆底层格式,因为它试图猜测数据类型是什么,并试图猜测应该以什么格式显示数据类型。

问题可能出在DateTime.Parse中。您需要将IFormatProvider作为第二个参数传递。