Замените каждую дату в сообщении на дату предыдущего дня - C#
Формулировка задачи:
В сообщении может содержаться дата в формате дд.мм.гггг. В заданном формате дд – целое число из диапазона от 1 до 31, мм – целое число из диапазона от 1 до 12, а гггг – целое число из диапазона от 1900 до 2010 (если какая-то часть формата нарушена, то данная подстрока в качестве даты не рассматривается). Замените каждую дату в сообщении на дату предыдущего дня.
В программе сделана замена даты на следующий день, как переделать на предыдущую?
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//сообщение
string text = "12.12.1910 Тестим выражение. 28 декабря 2012. Еще раз тест даты 31.12.2010";
//шаблон регулярного выражения
string pattern = "[0-3][0-9].[0-1][0-3].[1,2][9,0][0-9][0-9]";
Console.WriteLine("String to regex: {0}", text);
MatchCollection matches;
// применяем регулярку к тексту, и получаем массив дат в формате шаблона
Regex reg = new Regex(pattern);
matches = reg.Matches(text);
//преобразуем результат регулярки в дату, увеличиваем день, и заменяем в тексту дату.
for (int i = 0; i < matches.Count; i++)
{
string updDate = DateTime.Parse(matches[i].Value).AddDays(1).ToShortDateString();
text = text.Replace(matches[i].Value, updDate);
}
Console.WriteLine("\r\n{0}", text);
Console.ReadLine();
//Выводит:
//13.12.1910 Тестим выражение. 28 декабря 2012. Еще раз тест даты 01.01.2011
}
}
}Решение задачи: «Замените каждую дату в сообщении на дату предыдущего дня»
textual
Листинг программы
string updDate = DateTime.Parse(matches[i].Value).AddDays(-1).ToShortDateString();