2012-09-03 2 views
0

xxx는 숫자이고 yymmdd는 날짜 인 CDFSDDRCxxxCurryymmdd.xls (x)가있는 Excel 파일이 있습니다.정규식을 사용하여 하위 문자열을 얻을 수 있습니까

파일 이름에서 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"); 
       } 
+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을 사용합니다.

.

+0

정확히 내가 원했던 것. Tks. –

관련 문제