我有很多包含数据的.txt
文件。数据用,
分隔。
在第三列中,数据采用dd-mm-yyyy
格式。但它必须是yyyy/mm/dd
格式。更改机器格式不是解决方案。
这些文件足够小,可以加载到内存中,并按以下方式打开,但我不知道如何解决日期问题。谁能帮我?
foreach (string x in a)
{
string somePath = @"C:test";
string filename = x;
string path = Path.Combine(somePath, filename);
string str = File.ReadAllText(path);
str = str.Replace("AS", "");
File.WriteAllText(path, str);
}
下面是一个使用ReadAllLines()
和WriteAllLines()
的快速示例:
string[] lines;
string somePath = @"C:test";
foreach (string x in a)
{
string path = Path.Combine(somePath, x);
lines = File.ReadAllLines(path);
for (int i = 0; i < lines.Length;i++)
{
lines[i] = lines[i].Replace("AS", "");
string[] values = lines[i].Split(',');
if (values.Length >= 3)
{
string[] parts = values[2].Split('-');
if (parts.Length == 3)
{
values[2] = String.Format("{0}/{1}/{2}", parts[2], parts[1], parts[0]);
lines[i] = String.Join(",", values);
}
}
}
File.WriteAllLines(path, lines);
}
只需遍历所有行,拆分字符串,尝试解析它,然后以正确的格式将其写入输出文件。
foreach (string x in a)
{
string somePath = @"C:test";
string filename = x;
string path = Path.Combine(somePath, filename);
string str = File.ReadAllText(path);
str = str.Replace("AS", "");
var lines = str.Split('n');
foreach(var line in lines)
{
var parts = line.Split(',');
if(parts.Length > 2)
{
var d = parts[2];
DateTime dateValue;
if (DateTime.TryParseExact(d, "dd-MM-yyyy", new CultureInfo("en-US"),
DateTimeStyles.None, out dateValue))
{
var dateTxt = dateValue.ToString("yyyy/mm/dd");
...etc...
}
}
}
File.WriteAllText(path, str);
}