मैं लाखों नामों को एक-बार बैच प्रक्रिया में, उनके वर्तमान अपरकेस फ़ॉर्म से उचित मिश्रित मामले में बदलने के लिए एक मूल कार्य लिख रहा हूं। मैं निम्नलिखित समारोह के साथ आया था:नाम को उचित मामले में बदलने के लिए यह तरीका कैसे सुधार सकता है?
public string ConvertToProperNameCase(string input)
{
char[] chars = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input.ToLower()).ToCharArray();
for (int i = 0; i + 1 < chars.Length; i++)
{
if ((chars[i].Equals('\'')) ||
(chars[i].Equals('-')))
{
chars[i + 1] = Char.ToUpper(chars[i + 1]);
}
}
return new string(chars);
}
यह इस तरह के रूप ज्यादातर मामलों में काम करता है:
- जॉन स्मिथ → जॉन स्मिथ
- स्मिथ, जॉन टी → स्मिथ, जॉन टी
- जॉन O'BRIAN → जॉन ओ'ब्रायन
- जॉन डो-स्मिथ → जॉन डो-स्मिथ
- जेसन मैकडोनाल्ड → जेसन मैकडोनाल्ड (सही: जेसन मैकडॉनल्ड्स)
- ऑस्कर डी ला होया → ऑस्कर डी ला होया (सही: ऑस्कर डे ला होया
- MARIE DiFranco → मारी DiFranco (सही: मैरी DiFranco)
कुछ बढ़त मामलों जो काम नहीं करते हैं)
इन पर कब्जा कर लिया नहीं कर रहे हैं और मुझे लगता है कि अगर मैं ज कर सकते हैं यकीन नहीं है इन सभी अजीब किनारे के मामलों को हल करें। मैं किनारे के मामलों को कैप्चर करने के लिए कैसे बदल सकता हूं या जोड़ सकता हूं? मुझे यकीन है कि बहुत से किनारे के मामले हैं जिनके बारे में मैं भी सोच नहीं रहा हूं। सभी आवरणों को उत्तरी अमेरिकी सम्मेलनों का भी पालन करना चाहिए, जिसका अर्थ है कि यदि कुछ देश एक अलग पूंजीकरण प्रारूप की अपेक्षा करते हैं, तो उत्तरी अमेरिकी प्रारूप को प्राथमिकता दी जाती है।
कुछ हद तक मामूली विस्तार, लेकिन FxCop आपको 'इनपुट के बारे में चेतावनी देना चाहिए। कम करने वाला()'; आपको वहां उपयोग करने के लिए संस्कृति निर्दिष्ट करनी चाहिए। मुझे यकीन नहीं है कि यह 'Char.ToUpper' पर भी लागू होता है। –
मुझे पता है कि इससे मदद नहीं मिलती है, लेकिन ... यह एक कारण है कि शुरुआत करने के लिए अच्छा डेटा होना महत्वपूर्ण है। यदि नाम मिश्रित मामले के साथ संग्रहीत किए गए थे, तो यदि आपको आवश्यकता हो तो अपरकेस पर जाना आसान है। इसी प्रकार, यदि आपके नाम पहले/आखिरी में विभाजित हैं, तो आवश्यकता होने पर इसमें शामिल होना आसान है, लेकिन विपरीत नहीं है। –
@ नेल्सन लेकिन जब आपके पास कोई नियंत्रण नहीं है, तो आपके पास डेटा कहां से आया है :( – Kelsey