字符串在写入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();
}
由于您的文件将被计算机系统使用,因此数据在Excel中看起来不太正确也没关系。文件的实际内容是否为系统所期望的格式才是最重要的。
Excel可能会混淆底层格式,因为它试图猜测数据类型是什么,并试图猜测应该以什么格式显示数据类型。
问题可能出在DateTime.Parse
中。您需要将IFormatProvider
作为第二个参数传递。