2012-01-25 38 views
10

Tôi có chuỗi "THỨ NĂM 26 THÁNG 1 NĂM 2011".C# ToTitleCase và định dạng văn bản ngày/giờ

Khi tôi định dạng này sử dụng CultureInfo.ToTitleCase():

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

Nó được hiển thị như thế này: "Thursday 26Th January 2011". Đây chính xác là những gì tôi cần ... ngoại trừ T trong 26Th đã được viết hoa. Có cách nào để ngăn chặn điều này xảy ra vì nó là một ngày và có vẻ sai? I. Chỉ các ký tự xếp đầu đề không có số trực tiếp trước chúng?

Trả lời

8

Bạn có thể sử dụng một regex với một MatchEvaluator đặt chỉ "thật" từ trong ngăn tiêu đề:

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); 

này sẽ áp dụng trường hợp chỉ có tiêu đề là "thứ năm" và "tháng một", nhưng không phải là "26" bởi vì nó không phù hợp với mẫu regex.

+3

+1 - tốt đẹp .... nhưng họ nói gì về giải quyết vấn đề với cụm từ thông dụng? Bây giờ bạn có hai vấn đề. :) –

+5

Mọi người đều đứng lại! http://xkcd.com/208/ – jrummell

Các vấn đề liên quan