2009-08-24 12 views
10

मेरे पास एक स्ट्रिंग है जिसे मुझे सत्यापित करने की आवश्यकता है कि यह देश कोड है या नहीं। संस्कृति जर्मन है। क्या कोई ऐसी विधि है जिसे मैं जर्मन संस्कृति में देश कोडों की सूची प्राप्त करने के लिए सभी 274 (?) कोड टाइप किए बिना कॉल कर सकता हूं?देश कोड सूची - C#

धन्यवाद, तेजा।

उत्तर

13

जब आप कहते हैं कि "देश कोड" मुझे लगता है आप ISO 3166 में के रूप में दो अक्षर का कोड मतलब है। फिर आप यह जांचने के लिए RegionInfo कन्स्ट्रक्टर का उपयोग कर सकते हैं कि आपकी स्ट्रिंग सही कोड है या नहीं।

string countryCode = "de"; 
try { 
    RegionInfo info = new RegionInfo(countryCode); 
} 
catch (ArgumentException argEx) 
{ 
    // The code was not a valid country code 
} 

जैसा कि आप अपने प्रश्न में बताते हैं, आप यह भी कर सकते हैं कि यह जर्मन भाषा के लिए मान्य देश कोड है या नहीं। फिर आप देश कोड के साथ एक विशिष्ट संस्कृति नाम में पास हो जाते हैं।

string language = "de"; 
string countryCode = "de"; 
try { 
    RegionInfo info = new RegionInfo(string.Format("{0}-{1}", language, countryCode)); 
} 
catch (ArgumentException argEx) 
{ 
    // The code was not a valid country code for the specified language 
} 
+0

यह पता चला है कि जर्मन स्वास्थ्य बीमा नामकरण देशों की एक अलग प्रणाली का उपयोग करता है। देश कोड आकार 1-3 वर्णों से भिन्न होते हैं। फ़िर भी सहायता के लिए धन्यवाद! - तेजा 0 सेकंड पहले –

+0

वाह..यह वास्तव में अजीब है। अगर यह केवल तीन पत्र थे तो मैंने अनुमान लगाया था कि यह आईएसओ 3166-1 अल्फा 3 होगा जो देश कोड (जर्मन के लिए डीईयू) के लिए तीन अक्षरों का उपयोग करता है। – Ostemar

+0

यह अजीब है; आईएसओ 3166 देश कोड ऊपरी मामले हैं। – rds

0

http://cldr.unicode.org/ - सामान्य मानक बहुभाषी डेटाबेस देश सूची और अन्य स्थानीयकृत किए जाने योग्य डेटा शामिल हैं।

3

स्वीकार्य उत्तर कन्स्ट्रक्टर द्वारा ArgumentException फेंक दिया गया है। आप वास्तव में RegionInfo या ArgumentException उदाहरणों का उपयोग नहीं कर रहे हैं, जो कोड का उद्देश्य बहुत अस्पष्ट बनाता है। आपकी समस्या के लिए

bool IsCountryCodeValid(string countryCode) 
{ 
    return CultureInfo 
     .GetCultures(CultureTypes.SpecificCultures) 
      .Select(culture => new RegionInfo(culture.LCID)) 
       .Any(region => region.TwoLetterISORegionName == countryCode); 
} 

या विशेष रूप से,:

इसके बजाय, उन संस्कृतियों के क्षेत्रों के माध्यम से खोज करने पर अपने ISO 3166 अल्फा -2 कोड पर एक मैच खोजने के लिए, सभी विशिष्ट संस्कृतियों की एक सूची प्राप्त तो

bool IsValidGermanCountryCode(string countryCode) 
{ 
    return CultureInfo 
     .GetCultures(CultureTypes.SpecificCultures) 
      .Where(culture => culture.TwoLetterISOLanguageName == "de") 
       .Select(culture => new RegionInfo(culture.LCID)) 
        .Any(region => region.TwoLetterISORegionName == countryCode); 
} 
+0

स्पष्ट रूप से यह LINQ का उपयोग करता है। – Kjata30

1

वैध आईएसओ कोड की जांच के लिए RegionInfo का उपयोग करते समय सावधान रहें। यदि आपके द्वारा प्रदान किया गया कोड वैध है और यह एक समर्थित क्षेत्र है, तो यह एक क्षेत्र वापस कर देगा, लेकिन यह सभी मान्य आईएसओ 3166 कोडों के लिए ऐसा नहीं करेगा।

पूरा विवरण दिया गया के लिए यहाँ देखें: https://social.msdn.microsoft.com/Forums/en-US/c9a8bc14-d571-4702-91a6-1b80da239009/question-of-regioninfo-and-region-cy

RegionInfo यूरोप के लिए ठीक काम करेंगे, लेकिन वहाँ कई अफ्रीकी देशों है कि इस विधि (जैसे युगांडा) के साथ मान्य नहीं किया जाता है।

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