我有一个要求。
我在一个文件夹中有一些文件,其中一些文件名看起来像是
**EUDataFiles20100503.txt, MigrateFiles20101006.txt.**
基本上这些是我需要处理的文件。
现在我有一个配置文件,其中提到文件模式类型为
EUDataFilesYYYYMMDD,MigrateFilesYYYYMMDD 。
基本上,用户可以配置文件模式,并根据提到的模式,我需要搜索文件夹中存在的那些文件。
即。 在运行时,YYYYMMDD将被年月和日期值替换。那里的日期并不重要(但没有时间戳;只有日期)。
并且 EUDataFiles或MigrateFiles名称将在那里。(它们是固定的)
即。如果文件夹的文件名为EUDataFile20100504.txt(即2010年,05年,第04天),我应该忽略此文件,因为它不是EUDataFiles20100504.txt(请注意,该名称是复数 - 文件而不是系统将忽略该文件的文件。)
同样,如果模式以EUDataFilesYYYYMMDD的形式给出,如果文件存在的类型为EUDataFilesYYYYDDMM,那么系统也应该忽略。
我该如何解决这个问题?是否可以使用正则表达式(在运行时替换模式)?
如果有的话,任何人都可以帮助我出去吗?
我正在使用C#3.0和dotnet framework 3.5。
由于
答案 0 :(得分:1)
您可以从基本文件名加上(取决于模式)子正则表达式构造正则表达式。
子正则表达式可能是
yyyy = @"\d{4}"
(除非您想限制特定年份范围)
mm = @"(1[0-2]|0[1-9])"
dd = @"(3[01]|[12][0-9]|0[1-9])"
通过以正确的顺序添加正则表达式来构建正则表达式:
re = @"\AEUDataFiles" + yyyy + mm + dd + @"\.txt\Z"
然后你可以检查你找到的文件名是否与正则表达式匹配:
foundMatch = Regex.IsMatch(subjectString, re);
当然,这不是对正确日期的验证(20100231会通过),但在这种情况下这可能不是问题。