0

我有一个具有 CDFSDDRCxxxCurryymmdd.xls(x) 的 excel 文件,其中 xxx 是一个数字,yymmdd 是一个日期。

我使用这段代码从文件名中获取 Cxxx。

GetCompanyIdResult cmpId =
                    PantareiDataClasses.GetCompanyId(Application.ActiveWorkbook.Name.Substring(7, 4)).FirstOrDefault();

在我的代码中的某个地方,我使用这段代码来检查文件是否具有正确的名称。所以我想知道是否可以使用正则表达式从我的文件名中查找和检索 Cxxx,而不是使用字符串操作。

那可能吗?瑞马丁斯

Match nameIsValid = Regex.Match(activeWorkbook.Name,
                                      @"CDFSDDRC(?<xxx>[0-9]+)Curr(?<yymmdd>[0-9][0-9][0|1][0-9][0-3][0-9])\.xls?");

                switch (nameIsValid.Success)
                {
                    case false:
                        throw new DdrFileNameFormatNotValid("DDR file has a wrong name format");
                }
4

1 回答 1

0

你的正则表达式看起来不错。现在您只需要提取命名的捕获组,使用nameIsValid.Groups["xxx"].Value

string input = "CDFSDDRC123Curr120903.xls(x)";      
Match nameIsValid = Regex.Match(input, @"CDFSDDRC(?<xxx>[0-9]+)Curr(?<yymmdd>[0-9][0-9][0|1][0-9][0-3][0-9])\.xls?");
if (nameIsValid.Success) {
  string key = nameIsValid.Groups["xxx"].Value;
  Console.WriteLine(key);
}

要提取日期部分,请nameIsValid.Groups["yymmdd"].Value改用。

演示

于 2012-09-03T15:43:51.937 回答