2012-01-25 16 views
10

"THURSDAY 26 OCAK 2011" mesaj dizisine sahibim. C# ToTitleCase ve metin biçimlendirilmiş tarihler/saatler

Bunu kullanarak CultureInfo.ToTitleCase() biçimlendirmek

:

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

Böyle görüntülenir: "Thursday 26Th January 2011". Bu tam olarak ihtiyacım olan şeydir ... 26 THT hariç, büyük harf kullanıldı. Bunu bir tarih olduğu ve yanlış göründüğü için engellemenin bir yolu var mı? Önceden bir numaraya sahip olmayan sadece başlıklı karakterler mi?

Sen başlık halinde sadece "gerçek" kelimelerini koymak için bir MatchEvaluator ile bir regex kullanabilirsiniz

cevap

8

: Bu sadece "PERŞEMBE" ve "OCAK" değil "26." başlık durumda geçerli olacaktır

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

çünkü regex deseniyle uyuşmuyor.

+3

+1 - güzel .... ama normal ifadelerle bir problemin çözümü hakkında ne diyorlar? Şimdi iki problemin var. :) –

+5

Herkes geri çekiliyor! http://xkcd.com/208/ – jrummell

İlgili konular