2010-04-23 16 views
29

मैं TextInfo.ToTitleCase उपयोग करने के लिए उचित मामले को कुछ नाम परिवर्तित करने के लिए कोशिश कर रहा था। यह लोअरकेस और मिश्रित मामले में तारों के लिए ठीक काम करता है लेकिन ऊपरी मामले में सभी वर्णों के साथ तारों के लिए, यह इनपुट स्ट्रिंग को वापस देता है।
एमएसडीएन दस्तावेज में किसी भी अंतर्दृष्टि में इस व्यवहार के बारे में कुछ भी नहीं बताया गया है?TextInfo.ToTitleCase के रूप में सभी के लिए उम्मीद से काम नहीं करता कैप्स तार

उत्तर

60

MSDN से डॉक्स:

टिप्पणियां आम तौर पर, शीर्षक आवरण एक शब्द के पहले अक्षर को अपरकेस में बदल देता है और पात्रों के बाकी लोअरकेस TextInfo.ToTitleCase(TextInfo.ToLowerCase("STRINGINCAPS")

तरह की कोशिश करो। हालांकि, इस विधि वर्तमान में इस तरह के एक संक्षिप्त के रूप में उचित आवरण एक शब्द है जो पूरी तरह से अपरकेस, है परिवर्तित करने के लिए प्रदान नहीं करता है। निम्न तालिका विधि को कई तारों को प्रस्तुत करने का तरीका दिखाती है।

तो यह अपेक्षित व्यवहार है। यदि आप सभी अपरकेस हैं तो आप अपनी स्ट्रिंग को पहले घटा सकते हैं, फिर उस पर ToTitleCase चलाएं।

+0

आप सही हैं, दस्तावेज पढ़ने के दौरान मुझे याद आया। –

+0

@Nims - आपकी बेली रक्षा में, [वर्तमान] दस्तावेज़ यह नहीं कहते हैं कि ToTitleCase सभी कैप्स में स्क्वाट नहीं करेगा। मेरी पहली छाप यह थी कि यह * सभी कैप्स को अनदेखा नहीं करेगा और किसी भी तरह से शीर्षक केस होगा। ओह। 'textInfo.ToTitleCase (strAllCaps.ToLower()) 'यह है। – ruffin

+2

वर्तमान दस्तावेज यह भी कहता है "हम इस एपीआई को भविष्य में धीमा करने का अधिकार सुरक्षित रखते हैं।" माइक्रोसॉफ्ट से प्यार करने के लिए मिला! (: – chessofnerd

7

मुझे लगता है क्योंकि यह सभी राजधानियों में शब्द इस तरह के संयुक्त राज्य अमेरिका के रूप में संक्षिप्त रूपों होने की उम्मीद है।

उदाहरण के लिए, जैसा कि आप उम्मीद नहीं होता "भूकंप संयुक्त राज्य अमेरिका हिट" के लिए करने के लिए परिवर्तित किया जा सकता "भूकंप हिट अमेरिका" क्या तुम करोगी?

+0

यह तब एक बग है। यूनिकोड "यूएसए" -> "अमेरिका" निर्दिष्ट करता है। संपादित करें: ठीक है, एक बग नहीं, जैसा कि दस्तावेज़ों में उल्लेख किया गया है, लेकिन आश्चर्यजनक व्यवहार। – leppie

4

MSDN प्रलेखीकरण का कहना है:

आम तौर पर, शीर्षक आवरण एक शब्द के पहले अक्षर को अपरकेस में और पात्रों के बाकी लोअरकेस में बदलता है। हालांकि, एक शब्द जो पूरी तरह से अपरकेस है, जैसे संक्षिप्त नाम, परिवर्तित नहीं होता है।

तो यह अपेक्षित तरीके से काम।

string TitleCaseString; 
TextInfo myTI = new CultureInfo("en-US",false).TextInfo; 
TitleCaseString = myTI.ToTitleCase(myTI.ToLowerCase("STRINGINCAPS")); 
+0

मुझे शब्द 3.5 में बदलना चाहिए, और इस तथ्य के बारे में स्पष्ट नहीं है। – Kobi

संबंधित मुद्दे