2012-01-25 10 views
10

मेरे पास "गुरुवार 26 जनवरी 2011" एक स्ट्रिंग है।सी # ToTitleCase और टेक्स्ट-स्वरूपित दिनांक/समय

जब मैं इस CultureInfo.ToTitleCase का उपयोग कर() प्रारूप:

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

यह इस तरह प्रदर्शित होता है: "Thursday 26Th January 2011"। यह वही है जो मुझे चाहिए ... टी26Th को पूंजीकृत किया गया है। क्या ऐसा होने से रोकने का कोई तरीका है क्योंकि यह एक तिथि है और गलत दिखता है? I. केवल शीर्षक-आवरण पात्र हैं जिनके पास उनके सामने कोई संख्या नहीं है?

उत्तर

8

आप एक MatchEvaluator साथ एक regex इस्तेमाल कर सकते हैं शीर्षक मामले में केवल "असली" शब्द डालने के लिए:

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

यह केवल "गुरुवार" और "जनवरी", लेकिन "26TH" के शीर्षक केस लागू होगी क्योंकि यह regex पैटर्न से मेल नहीं खाता है।

+3

+1 - अच्छा .... लेकिन नियमित अभिव्यक्तियों के साथ समस्या को हल करने के बारे में वे क्या कहते हैं? अब आपके पास दो समस्याएं हैं। :) –

+5

सब लोग खड़े हो जाओ! http://xkcd.com/208/ – jrummell