【发布时间】:2018-08-31 20:24:08
【问题描述】:
这里是新的 C# 学习者。我浏览了许多已经在这里发布的问题;如果我错过了类似的问题,我很抱歉。
背景
我使用的一个程序会生成 Excel 文件,这些文件的名称包含创建日期。生成了数以千计的 Excel 文件,需要对其进行排序。我的任务是从这些文件名中提取信息,以便在确认后将文件移动到适当的位置。我正在使用一个程序,该程序成功地找到具有特定字符串的所有关联文件。我已将这些文件的名称存储在一个数组中。
示例文件名: IMPORTANT_NAME_LISTED (TEXT) [xx-xx-xx] [HH_MM].xlsx
已知情况
日期以月/日/年格式存储在“[]”中,并且 100% 一致(意味着每个文件都将产生相同的格式、大小和日期位置)。
我一直在尝试开发一种针对“.”的解决方案。在文件扩展名之前并提取日期,但我很挣扎。
我的策略
我有一个初步决定,确保存储所有文件名的数组包含值。
//code that extracts file names exists above
//file names which interest me are stored within "fileNameArray"
//Determine if the array that collected file names contains values
if (fileNameArray.Length > 1)
{
for (int k = 0; k <= fileNameArray.Length; k++)
{
//Extract date from "[xx-xx-xx] [HH-MM]"
//Transform MM/DD/YY to YY/MM/DD and temporarily store
//Compare each date value that exist within the string
//Target the most recent file - find the array index
//(Ex: 20180831 - today's date)
}
}
我的问题源于在保留数组索引的同时正确解析这些单独的数组项。
你们有没有推荐使用的方法? 林克? Array.FindAll 功能?
非常感谢您的帮助。
-克里斯
编辑: 关于我的情况的更多信息......
我有一个 Excel 文件目录,其中可能超过 ~1-3k 个文件。我有一个程序可以读取所有 Excel 文件的文件名。很多繁重的过滤/排序发生在我想要实现的上面的代码之前。
我一直在努力解决与处理同名文件有关的问题。例如:
我有 4 个文件包含相同的部分名称 "DILITHIUM_CRYSTYAL_FUEL_TIME"
我的程序必须能够通过核心名称"DILITHIUM_CRYSTYAL_FUEL_TIME" 过滤/搜索文件名。如果我有多个同名文件,我需要能够以一种隔离文件名中的时间戳并找到最新文件的方式来解析文件名。
我的文件将始终以 100% 一致的方式在文件扩展名左侧显示时间戳。
我需要能够提取此时间戳,并与其他文件进行比较,并隔离最新的文件。
【问题讨论】:
-
文件名没有日期属性。您可能希望您的数组为
FileInfo -
我认为不要使用数组使用 List
-
您可以使用正则表达式从文件名中提取日期。
-
正在使用的程序生成的文件名始终包含文件日期信息,包含在这种格式 [MM-DD-YY] 的括号内。
-
如果您的项目中有另一段代码对日期有用,则可以创建一个
struct,它在构造函数中接收文件名并解析日期。使用起来更容易。