С# ToTitleCase и даты и время форматирования текста

У меня есть строка "ЧЕТВЕРГ 26 ЯНВАРЯ 2011".

Когда я форматирую это с помощью CultureInfo.ToTitleCase():

var dateString = "THURSDAY 26th JANUARY 2011";
var titleString = myCultureInfoObject.TextInfo.ToTitleCase(dateString);

Отображается следующим образом: "Thursday 26Th January 2011". Это именно то, что мне нужно... кроме того, что значение T в 26Th было заглавным. Есть ли способ остановить это, потому что это дата и выглядит неправильно? I.e только символы заголовка, которые не имеют числа непосредственно перед ними?

Ответ 1

Вы можете использовать регулярное выражение с MatchEvaluator для размещения только "реальных" слов в заголовке:

var dateString = "THURSDAY 26th JANUARY 2011";
MatchEvaluator ev = m => myCultureInfoObject.TextInfo.ToTitleCase(m.Value);
var titleString = Regex.Replace(dateString, @"\b[a-zA-Z]+\b", ev);

Это применит заголовок только к "THURSDAY" и "JANUARY", но не "26TH", потому что он не соответствует шаблону регулярного выражения.