Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有电话号码这样的东西吗_C#_Phone Number - Fatal编程技术网

C# 有电话号码这样的东西吗

C# 有电话号码这样的东西吗,c#,phone-number,C#,Phone Number,我想找到一个工具/库,它可以将用户通过网站输入的自由格式电话号码解析成适合从给定国家拨打的号码 这并不像一开始听起来那么简单。该网站允许世界各地的人们以他们选择的任何方式输入他们的号码,因此许多人输入国家号码(一个国家也在另一个领域提供)。有些人使用“正确”格式(带“+”)输入国际号码,有些人使用本国的国际前缀输入的国际号码稍不正确 我想告诉图书馆/工具我拨打的国家,以及自由格式的电话号码和它所对应的国家(因为这将有助于生成国际代码,如果不输入),它使用已知的模式来最好地猜测在我的呼叫国工作的号

我想找到一个工具/库,它可以将用户通过网站输入的自由格式电话号码解析成适合从给定国家拨打的号码

这并不像一开始听起来那么简单。该网站允许世界各地的人们以他们选择的任何方式输入他们的号码,因此许多人输入国家号码(一个国家也在另一个领域提供)。有些人使用“正确”格式(带“+”)输入国际号码,有些人使用本国的国际前缀输入的国际号码稍不正确

我想告诉图书馆/工具我拨打的国家,以及自由格式的电话号码和它所对应的国家(因为这将有助于生成国际代码,如果不输入),它使用已知的模式来最好地猜测在我的呼叫国工作的号码

例如,从美国打电话到英国号码时:

+44 (0) 1225-344567 => 011441225344567
或者从英国拨打美国电话:

(613) 4562342 => 0016134562342
任何人都知道任何(理想的.NET框架友好型)解决方案可以避免我重新发明轮子。

不,没有:)管理国家间电话号码的规则很少。有些国家甚至有多重代表

例如,英国有可变大小的区号,例如:

  • 0121=伯明翰
  • 01223=剑桥
国际(和国家)电话号码的格式有一个“标准”。它们看起来是这样的:+31421234567(+国家前缀号码callthrough)。例子取自。虽然你不应该期望任何人以这种方式进入。根据我的经验,用户很可能会坚持他们习惯的格式


我不知道有哪个库会在所有(大部分是本地)表示形式之间转换为我提到的表示形式或任何其他格式。

我只实现了这个,Mark。我在一家无线运营商工作,有一个国际短信发送应用程序。我不知道有任何第三方图书馆实施这些规则。如上所述,我们不能只处理随机输入,因为各国的电话号码格式各不相同。一些国家如德国有可变长度的区号和电话号码。如果他们不把国家代码放进去,你就完了。然而,在我的例子中,我可以假设如果它缺少一个国家代码,它就是一个美国电话号码。我的过滤器的结果已经被证明是非常准确的用户和输入我有

你可以做一些假设,通过了解目标受众、记录输入和分析,你可以得到一些信息。我的第一个实现是一个“白标签”web应用程序,世界各地的人都在使用它进行测试。我很快发现,大多数外国人都有他们的共同行为,并且习惯了准标准+格式。通常美国人输入的电话号码最让人困惑。欧洲人非常习惯国际拨号

第一条规则是去掉除数字和前导“+”以外的所有内容

如果生成的数字少于8位,则为垃圾邮件,请提供用户错误

如果生成的数字以“+”开头,则假定它是标准格式,接下来的2-6位数字表示“国家代码”。算出国家代码,然后根据该国家的规则处理剩余的数字

如果数字以0开头,假设有人输入了国际访问前缀,并去掉前导的0和1,则: 如果剩余的数字是10位数字,则假定它是美国人输入的美国号码,并进行相应的处理。如果剩余的数字不是10位,而是至少8位,则假设前2-6位是国家代码,查找国家代码,并根据该国家的规则进行处理

如果数字以1开头,总共是11位数字,则假定它是美国(或加勒比海岛屿)的数字,并进行相应的处理

如果数字以1开头,且总数不是11位,则去掉前导的1,查看是否至少剩下8位,并假设剩余的前导2到6位是国家代码,并按照国家规则进行处理

最后,如果数字不以+、0或1开头,并且至少是8位数字,则假设它在标准符号中不带+,即首先是国家代码,则使用前2到6位数字作为国家代码,并根据该国家的规则进行处理

所有这些的诀窍是绘制出世界上所有国家代码的地图,以及每个国家的编号计划信息。我有那张地图,还有许多国家的规则。如果您想了解这些信息,我很乐意与您分享,并提供一些C#代码,以确定哪个国家。给我留言


在这方面,一个巨大的帮助是向用户发回软件猜测的国家的名称。如果他们试图输入一个德国电话号码,而您的软件询问他们是否试图拨打关岛,他们会很快理解

>是的:谷歌的java、C++和JavaScript库用于解析、格式化、存储和验证国际电话号码,现在已经移植到C<:


祝你好运

谷歌的国际电话号码解析、格式化、存储和验证库现已移植到C#


这样一个图书馆听起来非常适合。更不用说,没有任何标准规则。即使在同一个国家,如果你打电话到/从手机到陆地线路,也可能有不同的号码格式!不幸的是,国际电话号码的最佳解决方案是一个免费的文本框。谢谢。我们已经有了自由格式框。我已经将其连接到我们的电话系统中,这样人们就可以打电话给客户,而不必(经常错误地)在电话中输入号码。然而,我不得不实现一些定制的cod