【问题标题】:UWP get country phone number prefixUWP 获取国家电话号码前缀
【发布时间】:2016-01-17 10:46:37
【问题描述】:

我想获取电话号码的国家前缀。

例如如果我在美国,输入号码0123 - 456,我想得到前缀+1001,所以最后的号码是(+1) 0123 - 456 如果我在德国,同样的电话号码是(+49) 0123 - 456

如何在 UWP 应用中执行此操作?我在全球化或文化信息命名空间中找不到任何东西。

【问题讨论】:

  • 领先的+ 很简单,这是一个全球标准。我很确定0123-456 不是一个有效的美国号码,考虑到拨号计划的复杂性,你真的不想在讨论中包含无效号码。跨度>
  • 这只是举例,是否有效无关紧要。我只想得到+ 前缀号码。另外我不知道美国的号码格式,而德国的电话号码格式无效,两者都与我的问题无关。我真的只需要 + 前缀,例如+1 如果我的用户在美国(或他的设备在美国设置),+49 在德国或+33 在法国
  • 你为什么说“没关系”?您必须了解一个电话号码会被多次重写才能拨打电话。例如,当呼叫切换到德国网关电话交换机时,+49 被剥离。有道理,因为需要+49 来选择电话开关。它不再需要了。无效号码的问题是始发网络可能会立即拒绝它们。 (+49 无效示例可能会被德国网关拒绝 - 始发网络不知道德国拨号计划)
  • 我明白这一点。但我不明白你是如何抱怨的,我用来支持我的问题的任意虚构示例数字对我的问题有帮助。用户将输入他或她自己的号码。如果他们错了,这取决于用户,我只想支持添加国家代码,如果他或她没有这样做。如果建议的国家代码错误,用户可以更改它。如果用户输入了错误的数字,用户可以更改它。 解决方案下一篇文章中的问题。

标签: c# uwp phone-number


【解决方案1】:

this post 中,前缀国家/地区号码由字典使用ISO 3166-1 2 代码检索。

一些copy-pasta和稍后的小语言更改,我们有以下代码:

private string getCountryCode(string ISO3166)
{
    var dictionary = new Dictionary<string, string>();

    dictionary.Add("AC", "+247");
    dictionary.Add("AD", "+376");
    dictionary.Add("AE", "+971");
    dictionary.Add("AF", "+93");
    dictionary.Add("AG", "+1-268");
    dictionary.Add("AI", "+1-264");
    dictionary.Add("AL", "+355");
    dictionary.Add("AM", "+374");
    dictionary.Add("AN", "+599");
    dictionary.Add("AO", "+244");
    dictionary.Add("AR", "+54");
    dictionary.Add("AS", "+1-684");
    dictionary.Add("AT", "+43");
    dictionary.Add("AU", "+61");
    dictionary.Add("AW", "+297");
    dictionary.Add("AX", "+358-18");
    dictionary.Add("AZ", "+994"); // or +374-97
    dictionary.Add("BA", "+387");
    dictionary.Add("BB", "+1-246");
    dictionary.Add("BD", "+880");
    dictionary.Add("BE", "+32");
    dictionary.Add("BF", "+226");
    dictionary.Add("BG", "+359");
    dictionary.Add("BH", "+973");
    dictionary.Add("BI", "+257");
    dictionary.Add("BJ", "+229");
    dictionary.Add("BM", "+1-441");
    dictionary.Add("BN", "+673");
    dictionary.Add("BO", "+591");
    dictionary.Add("BR", "+55");
    dictionary.Add("BS", "+1-242");
    dictionary.Add("BT", "+975");
    dictionary.Add("BW", "+267");
    dictionary.Add("BY", "+375");
    dictionary.Add("BZ", "+501");
    dictionary.Add("CA", "+1");
    dictionary.Add("CC", "+61");
    dictionary.Add("CD", "+243");
    dictionary.Add("CF", "+236");
    dictionary.Add("CG", "+242");
    dictionary.Add("CH", "+41");
    dictionary.Add("CI", "+225");
    dictionary.Add("CK", "+682");
    dictionary.Add("CL", "+56");
    dictionary.Add("CM", "+237");
    dictionary.Add("CN", "+86");
    dictionary.Add("CO", "+57");
    dictionary.Add("CR", "+506");
    dictionary.Add("CS", "+381");
    dictionary.Add("CU", "+53");
    dictionary.Add("CV", "+238");
    dictionary.Add("CX", "+61");
    dictionary.Add("CY", "+357"); // or +90-392
    dictionary.Add("CZ", "+420");
    dictionary.Add("DE", "+49");
    dictionary.Add("DJ", "+253");
    dictionary.Add("DK", "+45");
    dictionary.Add("DM", "+1-767");
    dictionary.Add("DO", "+1-809"); // and 1-829?
    dictionary.Add("DZ", "+213");
    dictionary.Add("EC", "+593");
    dictionary.Add("EE", "+372");
    dictionary.Add("EG", "+20");
    dictionary.Add("EH", "+212");
    dictionary.Add("ER", "+291");
    dictionary.Add("ES", "+34");
    dictionary.Add("ET", "+251");
    dictionary.Add("FI", "+358");
    dictionary.Add("FJ", "+679");
    dictionary.Add("FK", "+500");
    dictionary.Add("FM", "+691");
    dictionary.Add("FO", "+298");
    dictionary.Add("FR", "+33");
    dictionary.Add("GA", "+241");
    dictionary.Add("GB", "+44");
    dictionary.Add("GD", "+1-473");
    dictionary.Add("GE", "+995");
    dictionary.Add("GF", "+594");
    dictionary.Add("GG", "+44");
    dictionary.Add("GH", "+233");
    dictionary.Add("GI", "+350");
    dictionary.Add("GL", "+299");
    dictionary.Add("GM", "+220");
    dictionary.Add("GN", "+224");
    dictionary.Add("GP", "+590");
    dictionary.Add("GQ", "+240");
    dictionary.Add("GR", "+30");
    dictionary.Add("GT", "+502");
    dictionary.Add("GU", "+1-671");
    dictionary.Add("GW", "+245");
    dictionary.Add("GY", "+592");
    dictionary.Add("HK", "+852");
    dictionary.Add("HN", "+504");
    dictionary.Add("HR", "+385");
    dictionary.Add("HT", "+509");
    dictionary.Add("HU", "+36");
    dictionary.Add("ID", "+62");
    dictionary.Add("IE", "+353");
    dictionary.Add("IL", "+972");
    dictionary.Add("IM", "+44");
    dictionary.Add("IN", "+91");
    dictionary.Add("IO", "+246");
    dictionary.Add("IQ", "+964");
    dictionary.Add("IR", "+98");
    dictionary.Add("IS", "+354");
    dictionary.Add("IT", "+39");
    dictionary.Add("JE", "+44");
    dictionary.Add("JM", "+1-876");
    dictionary.Add("JO", "+962");
    dictionary.Add("JP", "+81");
    dictionary.Add("KE", "+254");
    dictionary.Add("KG", "+996");
    dictionary.Add("KH", "+855");
    dictionary.Add("KI", "+686");
    dictionary.Add("KM", "+269");
    dictionary.Add("KN", "+1-869");
    dictionary.Add("KP", "+850");
    dictionary.Add("KR", "+82");
    dictionary.Add("KW", "+965");
    dictionary.Add("KY", "+1-345");
    dictionary.Add("KZ", "+7");
    dictionary.Add("LA", "+856");
    dictionary.Add("LB", "+961");
    dictionary.Add("LC", "+1-758");
    dictionary.Add("LI", "+423");
    dictionary.Add("LK", "+94");
    dictionary.Add("LR", "+231");
    dictionary.Add("LS", "+266");
    dictionary.Add("LT", "+370");
    dictionary.Add("LU", "+352");
    dictionary.Add("LV", "+371");
    dictionary.Add("LY", "+218");
    dictionary.Add("MA", "+212");
    dictionary.Add("MC", "+377");
    dictionary.Add("MD", "+373"); // or +373-533
    dictionary.Add("ME", "+382");
    dictionary.Add("MG", "+261");
    dictionary.Add("MH", "+692");
    dictionary.Add("MK", "+389");
    dictionary.Add("ML", "+223");
    dictionary.Add("MM", "+95");
    dictionary.Add("MN", "+976");
    dictionary.Add("MO", "+853");
    dictionary.Add("MP", "+1-670");
    dictionary.Add("MQ", "+596");
    dictionary.Add("MR", "+222");
    dictionary.Add("MS", "+1-664");
    dictionary.Add("MT", "+356");
    dictionary.Add("MU", "+230");
    dictionary.Add("MV", "+960");
    dictionary.Add("MW", "+265");
    dictionary.Add("MX", "+52");
    dictionary.Add("MY", "+60");
    dictionary.Add("MZ", "+258");
    dictionary.Add("NA", "+264");
    dictionary.Add("NC", "+687");
    dictionary.Add("NE", "+227");
    dictionary.Add("NF", "+672");
    dictionary.Add("NG", "+234");
    dictionary.Add("NI", "+505");
    dictionary.Add("NL", "+31");
    dictionary.Add("NO", "+47");
    dictionary.Add("NP", "+977");
    dictionary.Add("NR", "+674");
    dictionary.Add("NU", "+683");
    dictionary.Add("NZ", "+64");
    dictionary.Add("OM", "+968");
    dictionary.Add("PA", "+507");
    dictionary.Add("PE", "+51");
    dictionary.Add("PF", "+689");
    dictionary.Add("PG", "+675");
    dictionary.Add("PH", "+63");
    dictionary.Add("PK", "+92");
    dictionary.Add("PL", "+48");
    dictionary.Add("PM", "+508");
    dictionary.Add("PR", "+1-787"); // and 1-939 ?
    dictionary.Add("PS", "+970");
    dictionary.Add("PT", "+351");
    dictionary.Add("PW", "+680");
    dictionary.Add("PY", "+595");
    dictionary.Add("QA", "+974");
    dictionary.Add("RE", "+262");
    dictionary.Add("RO", "+40");
    dictionary.Add("RS", "+381");
    dictionary.Add("RU", "+7");
    dictionary.Add("RW", "+250");
    dictionary.Add("SA", "+966");
    dictionary.Add("SB", "+677");
    dictionary.Add("SC", "+248");
    dictionary.Add("SD", "+249");
    dictionary.Add("SE", "+46");
    dictionary.Add("SG", "+65");
    dictionary.Add("SH", "+290");
    dictionary.Add("SI", "+386");
    dictionary.Add("SJ", "+47");
    dictionary.Add("SK", "+421");
    dictionary.Add("SL", "+232");
    dictionary.Add("SM", "+378");
    dictionary.Add("SN", "+221");
    dictionary.Add("SO", "+252");
    dictionary.Add("SR", "+597");
    dictionary.Add("ST", "+239");
    dictionary.Add("SV", "+503");
    dictionary.Add("SY", "+963");
    dictionary.Add("SZ", "+268");
    dictionary.Add("TA", "+290");
    dictionary.Add("TC", "+1-649");
    dictionary.Add("TD", "+235");
    dictionary.Add("TG", "+228");
    dictionary.Add("TH", "+66");
    dictionary.Add("TJ", "+992");
    dictionary.Add("TK", "+690");
    dictionary.Add("TL", "+670");
    dictionary.Add("TM", "+993");
    dictionary.Add("TN", "+216");
    dictionary.Add("TO", "+676");
    dictionary.Add("TR", "+90");
    dictionary.Add("TT", "+1-868");
    dictionary.Add("TV", "+688");
    dictionary.Add("TW", "+886");
    dictionary.Add("TZ", "+255");
    dictionary.Add("UA", "+380");
    dictionary.Add("UG", "+256");
    dictionary.Add("US", "+1");
    dictionary.Add("UY", "+598");
    dictionary.Add("UZ", "+998");
    dictionary.Add("VA", "+379");
    dictionary.Add("VC", "+1-784");
    dictionary.Add("VE", "+58");
    dictionary.Add("VG", "+1-284");
    dictionary.Add("VI", "+1-340");
    dictionary.Add("VN", "+84");
    dictionary.Add("VU", "+678");
    dictionary.Add("WF", "+681");
    dictionary.Add("WS", "+685");
    dictionary.Add("YE", "+967");
    dictionary.Add("YT", "+262");
    dictionary.Add("ZA", "+27");
    dictionary.Add("ZM", "+260");
    dictionary.Add("ZW", "+263");

    if (dictionary.ContainsKey(ISO3166))
    {
      return dictionary[ISO3166];
    }
    else
    {
      return null;
    }
}

如果有人知道更优雅的方法来检索这些数字,或者如果有官方 API,请随时分享。

像这样使用它:

private string getCountryCode()
{
    var c = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
    return getCountryCode(c.ToUpper());
}

【讨论】:

    【解决方案2】:

    手机自己的国家代码是ICCID 的一部分,在前缀89 之后开始。不需要桌子。

    【讨论】:

    • 非常感谢您的回答,不幸的是,在 UWP(通用 Windows 程序)中,没有特殊权限的人无法访问 ICCID。
    • @user3079834:抱歉,我在点击您答案中的链接时走神了。
    • 没问题,对于 android,您的解决方案似乎相当优雅。我不会想到ICCID。这将解决我的代码中仍然存在的问题,当我在法国时,但我的设置被设置为美国设置(因为我有一个英文键盘并且默认使用英文程序),所以我的代码将返回 USTwoLetterISOLanguageName 因此 +1
    • @user3079834:基本上您需要 SIM 卡详细信息,而不是 UI 设置。电话网络仅使用 SIM 卡详细信息。
    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2012-06-02
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多