Замена фразы по маске на другую фразу по маске в файле - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Имеется задача, которую, к сожалению, пока не могу реализовать: Есть текстовый файл состоящий из множества строк. В нем нужно заменить первое вхождение фразы, удовлетворяющей маске "; день недели(3 символа) число (2 символа) месяц (3 символа) год (4 символа) время (hh:mm:ss) часовой пояс (всегда +0300)" (например,"; Fri, 30 Jun 2017 09:06:53 +0300"), на второе вхождение фразы, удовлетворяющей маске. Остальные фразы не трогать. Фраза всегда начинается с символа ";" и заканчивается на "+0300". Если бы вся фраза всегда располагалась на одной строке, проблем у меня это бы не вызвало. Но фраза может начаться на одной строке, а закончиться на другой. Пример прилагаю.

Решение задачи: «Замена фразы по маске на другую фразу по маске в файле»

textual
Листинг программы
  1.         static void Main(string[] args)
  2.         {
  3.  
  4.             string[] dirs = Directory.GetFiles(@"D:\mail\", "*.eml");
  5.             try
  6.             {
  7.                 foreach (string dir in dirs)
  8.                 {
  9.                     Console.WriteLine(dir);
  10.                     string file = String.Empty;
  11.                     using (StreamReader read = new StreamReader(dir, Encoding.Default))
  12.                     {
  13.                         file = read.ReadToEnd();
  14.                     }
  15.                     Regex regex = new Regex(@";\s*[a-z]{3},\s*\d\d\s*[a-z]{3}\s*\d{4}\s*\d\d:\d\d:\d\d\s*\+0300", RegexOptions.IgnoreCase);
  16.                     Match m = regex.Match(file);
  17.                     string dateOld = String.Empty;
  18.                     string dateNew = String.Empty;
  19.                     if (m.Success)
  20.                     {
  21.                         dateOld = m.ToString();
  22.                         dateNew = m.NextMatch().ToString();
  23.                     }
  24.                     using(StreamWriter writer =new StreamWriter(dir.Insert(dir.LastIndexOf('\\') + 1, "end\\"),false,Encoding.Default))
  25.                     {
  26.                         writer.WriteLine(file.Replace(dateOld, dateNew));
  27.                     }
  28.  
  29.                 }
  30.             }
  31.             catch (Exception e)
  32.             {
  33.                 Console.WriteLine("Произошла ошибка: {0}", e.ToString());
  34.                 Console.ReadLine();
  35.             }
  36.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы