【问题标题】:How to remove the country code from the mobile number?怎么去掉手机号码的国家代码?
【发布时间】:2017-04-03 10:38:23
【问题描述】:

我想从手机号码中删除国家代码。该方法必须满足世界上任何一个国家。我试图从手机号码中删除特殊字符,例如“+”、“-”,但是我无法从手机号码中删除任何国家/地区代码。 下面是去除手机号特殊字符的代码。

 public string RemoveCountryCode()
 {
   string phoneNumber = "441632960960";
   phoneNumber = Regex.Replace(phoneNumber, @"[^\d]", "");
   return phoneNumber ;
}

这里的主要问题是手机号码中的位数因国家/地区而异,我研究了该主题,但其中许多人以静态方式编写。这是链接Best practice for parsing and validating mobile number

【问题讨论】:

  • 您实际上应该将国家代码和手机号码分开以避免此问题
  • 不同的 -2 国家有不同的 -2 移动长度,它们的国家代码可能有相同的起始字符,所以你永远不知道移动从哪个索引开始或国家代码结束。所以最终你不能这样做,除非你有国家代码,固定的移动长度
  • 你不能从你的输入字符串中做到这一点,因为有 2 和前面有三个数字的国家(不确定是否存在更多字符的国家)。正如其他人已经提到的那样,您应该从一开始就拥有两个输入字段,以将其与另一个分开。
  • 不是每个人都在他们的数字中使用特殊符号。还有一些子代码在某些国家/地区显示子域,不被视为“主要”电话部分的一部分。你的任务太宽泛了。电话号码可能无法严格解析(因为它们没有严格标准化)。您可能想问自己到底要达到什么目标=)我对电话号码感到痛苦,当我遇到 3000 多个符号正则表达式时,我设法注意到我们的大多数客户来自区域较少,因此可以简化业务任务。
  • 另一种做法是保留一些描述您最感兴趣的地区数字的静态数据。例如,您可以检查 IE 注意到哪些模式,它会为您提供一些有关国家代码和解析。

标签: c#


【解决方案1】:

您必须了解这个国家才能实现这一目标。请找到我的答案,如果您有国家/地区列表,将对您有所帮助。如果您有任何问题,请告诉我。

public string RemoveCountryCode()
    {
        string phonenumber = "+91123123123";

        List<string> countries_list = new List<string>();
        countries_list.Add("+1");
        countries_list.Add("+91");

        foreach(var country in countries_list)
        {
             phonenumber = phonenumber.Replace(country, "");

        }

        return phonenumber;
    }

【讨论】:

  • @prasanthi 欢迎
猜你喜欢
  • 2016-05-27
  • 2016-10-12
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
相关资源
最近更新 更多