Как извлечь дату только из имени файла с помощью С#

У меня возникла ситуация, когда мне нужно извлечь даты из имен файлов, общий шаблон которых [XXXX_BBBB]_YYYY-MM-DD[.fileExtension] пример Sales_person_2019-05-03.xlsx.

Для этого я использую С# в компоненте задачи сценария SSIS.

ниже мой код:

public void Main()
{

            // TODO: Add your code here
   string pat;
   string date;
   string filename = 'Sales_person_2019-05-03.xlsx'

   // Get the Date part from the file name only
   pat = @"[0-9]{2}[0-9]{2}[0-9]{4}";
   Regex r = new Regex(pat, RegexOptions.IgnoreCase);
   date = r.Match(filename);
   MessageBox.Show(date.ToString());}


    Dts.TaskResult = (int)ScriptResults.Success;
}

но это не работает. Может кто-нибудь помочь, пожалуйста. Новичок в С#


person user3011898    schedule 03.05.2019    source источник
comment
В принципе, я хотел бы получить эту дату 2019-05-03 в этом формате 2019/05/02 спасибо   -  person user3011898    schedule 03.05.2019


Ответы (1)


Вы можете добиться этого без регулярных выражений, просто используйте строковые функции (IndexOf() и Substring()):

Поскольку вы работаете с фиксированным шаблоном [XXXX_BBBB]_YYYY-MM-DD[.fileExtension], просто извлеките 10 символов, расположенных после второго символа подчеркивания.

public void Main()
{

    string filename = "Sales_person_2019-05-03.xlsx";

    // Get the Date part from the file name only
    string filedate = filename.Substring(filename.IndexOf('_',filename.IndexOf('_') + 1) + 1,10);

    DateTime dt = DateTime.ParseExact(filedate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None)

    Dts.TaskResult = (int)ScriptResults.Success;
}
person Hadi    schedule 06.05.2019
comment
@ user3011898, если это решит проблему. Не стесняйтесь принять его, нажав на значок слева от ответа. - person Hadi; 07.05.2019