Подтвердить что ты не робот

Получить RegionInfo по названию страны?

Я хочу получить RegionInfo, выполнив следующие действия:

new RegionInfo("United Kingdom");

но это вызывает исключение и говорит, что оно не распознается.

Эта страница в RegionInfo говорит, что исключение вызывается, если "имя не является допустимым именем страны/региона".

И все же эта страница указывает список предопределенных областей, используемых классом, который содержит United Kingdom, поэтому почему не создается новый RegionInfo с название страны?

4b9b3361

Ответ 1

  var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID));
  var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(name));

Если вы хотите получить RegionInfo по названию страны, вы можете получить IEnumerable<RegionInfo>, а затем фильтровать на основе EnglishName, как указано выше. Это дает вам возможность заполнять такие вещи, как comboboxes.

Ответ 2

На этой же странице вы также указали:

Имя RegionInfo является одним из двухбуквенных кодов, определенных в ISO 3166 для страны/региона. Дело не имеет значения; однако, Имя, TwoLetterISORegionName и свойства ThreeLetterISORegionName верните соответствующий код в верхнем регистре.

Коды находятся на странице, а GB - это 2-буквенный код для Великобритании (это сложный поиск кода!). Поэтому попробуйте следующее:

new RegionInfo("GB");

Или, если вы используете .NET 2.0+, рекомендуется использовать полное имя культуры:

new RegionInfo("en-GB");

Ответ 3

Из MSDN;

Строка, содержащая двухбуквенный код, определенный в ISO 3166 для страна/регион.

UNITED KINGDOM выглядит нормально на Названия стран и элементы кода на веб-сайте ISO.

GB СОЕДИНЕННОЕ КОРОЛЕВСТВО

Попробуйте с помощью

new RegionInfo("GB");

Ответ 4

Если я перейду к конструктору, то резюме, которое я вижу в Visual Studio, говорит:

name. Строка, содержащая двухбуквенный код, определенный в ISO 3166, для country/region.-or-A, которая содержит название культуры для специфической культуры, пользовательской культуры или культуры Windows. Если название культуры не указано в формате RFC 4646, ваша заявка должна укажите название всей культуры, а не только страну/region.

Название всей культуры будет "en-GB".

Или вы можете использовать 'GB'

Ответ 5

Посмотрите страницу MSDN:

A string containing one of the two-letter codes defined in ISO 3166 for country/region.

Вам нужен код ISO 3166 для Великобритании, а не название страны.

Здесь код, который вам нужен.

Ответ 6

Обратите внимание на этот комментарий из метаданных для параметра name, который объясняет изменение с .NET Framework 2.0 на:

    //     A string containing one of the two-letter codes defined in ISO 3166 for country/region.-or-Beginning
    //     in .NET Framework version 2.0, a string containing the culture name for a
    //     specific culture, custom culture, or Windows-only culture. If the culture
    //     name is not in RFC 4646 format, your application should specify the entire
    //     culture name, not just the country/region.