C#ToTitleCase和文本格式的日期/时间

本文关键字:日期 时间 格式 文本 C#ToTitleCase | 更新日期: 2023-09-27 18:21:19

我有一个字符串"2011年1月26日星期四"。

当我使用CultureInfo.ToTitleCase()格式化时:

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

其显示方式如下:"Thursday 26Th January 2011"。这正是我需要的。。。除了26Th中的T已资本化。有没有办法阻止这种情况的发生,因为这是一个约会,看起来不对?I.e只有标题大小写的字符前面没有数字?

C#ToTitleCase和文本格式的日期/时间

您可以使用带有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"answers"JANUARY",而不应用于"26TH",因为它与正则表达式模式不匹配。