Настолько явно я утомлен…
Пренебрегите вышеуказанным. Здесь испытанный вариант. Единственное предостережение что вы вызывать функцию дважды для что-то как «4-ое июня 13-ое июля» потому что regex находит «e4 " и «y1» и не находит «4J» на первом пропуске. Вы должны исполнить его вторая гололедь для того чтобы выбрать вверх «4J».
Regex.Replace (your_string, @ "] [a-zA-Z \ d|\ d [a-zA-Z] «, AlterMatch);
\ \ функция AlterMatch
шнур AlterMatch (спичка m)
{
возвращенный шнур. Concat (m.Value [0], ««, m.Value [1]);
}