C# 国际手机号类封装 - 使用nuget Global Phone 解析国际手机号
来源:互联网 发布:nginx解决跨越 编辑:程序博客网 时间:2024/06/05 03:47
1. package-install GlobalPhone
2. Phone.cs
2. Phone.cs
public class Phone { public string CountryCode { get; set; } public string InternationalNumber { get; set; } public string NationalNumber { get; set; } public string Territory { get; set; } public bool IsValid { get; set; } public Phone() { } private Phone(global::GlobalPhone.Number number) : this() { CountryCode = number.CountryCode; InternationalNumber = number.InternationalString; NationalNumber = number.NationalFormat; Territory = number.Territory.Name; IsValid = number.IsValid; } private static bool __libraryLoaded; private static global::GlobalPhone.Database __databse; private static void LoadStaticContent() { if (!__libraryLoaded) { try { var assembly = Assembly.GetExecutingAssembly(); var dataStream = assembly.GetManifestResourceStream("Common.GlobalPhone.data.json"); if (dataStream != null) { var reader = new StreamReader(dataStream); var text = reader.ReadToEnd(); global::GlobalPhone.GlobalPhone.DbText = text; __databse = global::GlobalPhone.Database.Load(text); } } catch (Exception ex) { throw; } __libraryLoaded = true; } } private static readonly object __globalPhoneLock = new object(); private static global::GlobalPhone.Region TrnaslateRegion(String countryCode) { if (string.IsNullOrEmpty(countryCode)) { return null; } lock (__globalPhoneLock) { return __databse.TryGetRegion(countryCode); } } private static global::GlobalPhone.Territory TranslateTerritory(String territoryName) { if (string.IsNullOrEmpty(territoryName)) { return null; } lock (__globalPhoneLock) { return __databse.TryGetTerritory(territoryName); } } public static Phone TryParseWithCountryCode(string number, string countryCode) { LoadStaticContent(); var region = TrnaslateRegion(countryCode); if (region != null) { var territory = region.Territories.FirstOrDefault(); if (territory != null) { return TryParse(number, territory.Name); } } return null; } public static Phone TryParse(string number, string territoryName = null) { LoadStaticContent(); if (string.IsNullOrEmpty(number)) { return null; } var globalNumber = global::GlobalPhone.GlobalPhone.TryParse(number, territoryName); if (globalNumber != null && globalNumber.IsValid) { return new Phone(globalNumber); } //In scenario such as 6597531150 we need to help the library to understand that there is already the country code as a prefix var territory = TranslateTerritory(territoryName); if (territory != null) { //If the number start with same country code, we will try to add the plus and parse it again if (number.StartsWith(territory.CountryCode)) { globalNumber = global::GlobalPhone.GlobalPhone.TryParse(string.Format("+{0}", number), territoryName); if (globalNumber != null && globalNumber.IsValid) { return new Phone(globalNumber); } } } return null; } }
1 0
- C# 国际手机号类封装 - 使用nuget Global Phone 解析国际手机号
- 国际手机号的格式
- android 国际区号注册手机号编码 以及常用城市列表
- 手机号
- 手机号
- C# 手机号 正则
- C#中使用正则表达式验证电话号码、手机号、身份证号
- C#使用正则表达式验证手机号格式是否正确
- C#使用正则表达式验证电话号码、手机号、身份证号代码
- Validate International Phone Numbers (验证国际电话号码)
- Magento 使用手机号注册登录
- 使用jQuery做 手机号验证
- Magento 使用手机号注册登录
- Java 使用注解检验手机号
- 国际运价---Fare Basis解析
- C#判断各种字符串(如手机号)
- C#隐藏手机号中间四位为*
- C#正则表达式用于手机号判断
- mongo使用java-spring时用户验证配置方法
- 决策树系列(五)——CART
- Linux的帮助信息
- fstream从txt文件中读取指定一列
- solrcloud6.1.0真机tomcat部署
- C# 国际手机号类封装 - 使用nuget Global Phone 解析国际手机号
- Sphinx 在网站应用中的服务架构设计
- Centos7 yum 源配置
- 逆向分析学习入门教程
- iMessage Apps and Stickers, Part 1
- Yii2.0 视图 views
- 2016ACM网络赛和现场赛总结
- IDEA不能不用的快捷键
- Oracle 查询优化改写