2009-08-24 2 views
10

국가 코드인지 확인해야하는 문자열이 있습니다. 문화는 독일어입니다. 274 (?) 코드를 모두 타이핑하지 않고도 독일 문화권의 국가 코드 목록을 얻으려면 전화 할 수있는 방법이 있습니까?국가 코드 목록 - C#

감사합니다. Teja. 당신은 단지 국가/지역을해야하는 경우

답변

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

와우. 정말 이상합니다. 3 글자라면 ISO 3166-1 Alpha 3로 3 개의 문자를 국가 코드 (독일어의 경우 DEU)로 사용했습니다. – Ostemar

+0

이것은 이상합니다. ISO 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을 사용하여 유효한 ISO 코드를 검사 할 때주의하십시오. 제공 한 코드가 유효하고 지원되는 영역 인 경우 영역을 반환하지만 모든 유효한 ISO 3166 코드에서이 코드를 사용하지는 않습니다. https://social.msdn.microsoft.com/Forums/en-US/c9a8bc14-d571-4702-91a6-1b80da239009/question-of-regioninfo-and-region-cy

RegionInfo 유럽을 위해 잘 작동하지만,이 방법 (예를 들어, 우간다)와 검증되지 않은 여러 아프리카 국가가있다 :

는 풀러 설명은 여기를 참조하십시오.

관련 문제