2012-01-25 9 views
10

Ho una stringa "GIOVEDÌ 26 GENNAIO 2011".C# ToTitleCase e date/orari formattati in testo

Quando ho formattare questo usando CultureInfo.ToTitleCase():

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

viene visualizzato in questo modo: "Thursday 26Th January 2011". Questo è esattamente ciò di cui ho bisogno ... eccetto lo T in 26Th è stato in maiuscolo. C'è un modo per impedire che ciò accada perché è un appuntamento e sembra sbagliato? I.e solo i personaggi di intestazione del titolo che non hanno un numero direttamente davanti a loro?

risposta

8

Si potrebbe usare una regex con un MatchEvaluator di mettere solo le parole "reali" nel caso in cui il titolo:

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

Ciò si applicherà maiuscole solo per "GIOVEDI" e "Gennaio", ma non "26TH" perché non corrisponde al modello regex.

+3

+1 - bello .... ma cosa dicono di risolvere un problema con le espressioni regolari? Ora hai due problemi. :) –

+5

Tutti si tirano indietro! http://xkcd.com/208/ – jrummell

Problemi correlati