我有很多包含数据的.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);
}
答案 0 :(得分:1)
以下是使用def find_matches_overlapping(text, pattern):
lpat = len(pattern) - 1
matches = []
text = array("u", text)
pattern = array("u", pattern)
indexes = {}
for i in range(len(text) - lpat):
if text[i] == pattern[0]:
indexes[i] = -1
for index, counter in list(indexes.items()):
counter += 1
if text[i] == pattern[counter]:
if counter == lpat:
matches.append(index)
del indexes[index]
else:
indexes[index] = counter
else:
del indexes[index]
return matches
def count_matches(text, pattern):
return len(find_matches_overlapping(text, pattern))
和ReadAllLines()
的简短示例:
WriteAllLines()
答案 1 :(得分:0)
只需遍历所有行,拆分字符串,尝试解析它,然后以正确的格式将其写入输出文件。
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);
}