2012-09-03 47 views
0

我有一個Excel文件,其中有一個CDFSDDRCxxxCurryymmdd.xls(x)其中xxx是一個數字,yymmdd是一個日期。我可以使用正則表達式來獲取子字符串

我使用這一點代碼從文件名獲得Cxxx。

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

而在我的代碼中的某處,我使用這一段代碼來檢查文件是否有正確的名稱。所以我想知道是否可以使用正則表達式從我的文件名中查找和檢索Cxxx,而不是使用字符串操作。

這可能嗎? Rui Martins

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"); 
       } 
+0

看起來不錯。你試過了嗎? – Bush

回答

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代替。

DEMO

+0

正是我想要的。韓國社交協會。 –

相關問題