С# 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", потому что он не соответствует шаблону регулярного выражения.