回答
當你說「國家代碼」我想你指的是兩個字母的代碼作爲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
}
如果你只需要國家/地區,您可以使用RegionInfo類: http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.aspx
http://cldr.unicode.org/ - 通用的標準語言數據庫包括國家列表和其他本地化數據。
接受的答案是濫用了構造函數拋出的ArgumentException
。你並沒有真正使用RegionInfo
或ArgumentException
實例,這使得代碼的目的很不明確。
取而代之的是,讓所有特定文化的列表,然後通過搜索這些文化的地區找到你的ISO 3166的α-2碼匹配:
bool IsCountryCodeValid(string countryCode)
{
return CultureInfo
.GetCultures(CultureTypes.SpecificCultures)
.Select(culture => new RegionInfo(culture.LCID))
.Any(region => region.TwoLetterISORegionName == countryCode);
}
或者具體而言,對於您的問題:
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);
}
顯然這使用LINQ。 – Kjata30 2015-01-28 22:56:35
使用RegionInfo
檢查有效的ISO代碼時要小心。如果您提供的代碼有效並且它是受支持的區域,它將返回一個區域,但它不會爲所有有效的ISO 3166代碼執行此操作。
在這裏看到一個更全面的解釋:https://social.msdn.microsoft.com/Forums/en-US/c9a8bc14-d571-4702-91a6-1b80da239009/question-of-regioninfo-and-region-cy
RegionInfo
將罰款歐洲,但也有未用此方法(例如烏干達)驗證的幾個非洲國家。
- 1. C++獲取國家代碼
- 2. 清單電話號碼的所有國家代碼
- 3. PHP國際國家代碼2國家代碼的字符
- 4. 轉換國家代碼國家名稱
- 5. 選擇國家和國家代碼?
- 6. IOS:國家代碼
- 7. ISO國家代碼
- 8. C#:從國家代碼獲取國家名稱
- 9. 從國家或國家代碼獲取電話代碼 - Twilio
- 10. FIPS國家代碼在objective-c
- 11. 國際海域的國家代碼
- 12. 國家和國家撥號代碼,國家名稱和國家圖標目標c
- 13. 獲取ISO國家代碼
- 14. 國家代碼驗證
- 15. 貝寶國家代碼
- 16. Rails查詢國家代碼
- 17. 顛覆國家代碼404
- 18. 得到iso3國家代碼
- 19. 轉換ISO2國家代碼
- 20. Android SmsMessage國家代碼
- 21. 的TimeZoneInfo和國家代碼
- 22. django國家貨幣代碼
- 23. Magento:按國名獲取國家代碼
- 24. Android Locale國名到國家代碼
- 25. iOS的國家和國家撥號代碼列表
- 26. 從國家代碼中獲取國家/地區名稱
- 27. 將ISO3國家代碼轉換爲ISO2國家代碼 - Windows Phone 8
- 28. 在url中設置國家代碼並用國家代碼重寫它
- 29. 下拉菜單中的電話國家代碼的國家選擇
- 30. 帶國家撥號代碼和國家標誌的下拉菜單
事實證明,德國健康保險使用不同的命名國家系統。國家代碼大小從1-3個字符變化。感謝您的幫助! - Teja 0秒前 – 2009-08-24 20:55:35
哇......真奇怪。如果只有三個字母,我會猜測它是ISO 3166-1 Alpha 3,國家代碼使用三個字母(德語爲DEU)。 – Ostemar 2009-08-24 21:00:21
這很奇怪; ISO 3166國家代碼是大寫。 – rds 2012-10-30 09:38:26