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 に答える